Skip to content

Commit 117cefb

Browse files
committed
Updates configuration.md
Auto commit by GitBook Editor
1 parent c171f2e commit 117cefb

File tree

1 file changed

+223
-0
lines changed

1 file changed

+223
-0
lines changed

configuration.md

Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
# 配置
2+
3+
当使用 [Init命令 ](/命令)初始化项目时,Phinx默认创建一个文件 `phinx.yaml` 在项目根目录。文件是 YAML 格式。
4+
5+
如果 `--configuration` 参数提供了,那Phinx会载入指定配置文件,否则会尝试寻找 `phinx.php` , `phinx.json`, `phinx.yaml`
6+
7+
并加载。
8+
9+
注意 JSON 和 YAML 文件需要转化,PHP文件直接引用。意味着:
10+
11+
* 配置文件必须返回一个配置数组
12+
* 变量定义域是本地,\*\*\*\*\*\*\*(这句话不大理解)
13+
* 标准输出
14+
* 不像 JSON 和 YAML,\*\*\*\*\*(这句话不大理解)
15+
16+
```
17+
require 'app/init.php';
18+
19+
global $app;
20+
$pdo = $app->getDatabase()->getPdo();
21+
22+
return array('environments' =>
23+
array(
24+
'default_database' => 'development',
25+
'development' => array(
26+
'name' => 'devdb',
27+
'connection' => $pdo
28+
)
29+
)
30+
);
31+
```
32+
33+
## Migration 路径
34+
35+
第一个选项指定了迁移脚本目录。 默认是 `%%PHINX_CONFIG_DIR%%/db/migrations`
36+
37+
> `%%PHINX_CONFIG_DIR%% 自动替换为项目根目录`
38+
39+
如果要重写迁移脚本目录,需要增加以下代码到 yaml 配置文件
40+
41+
```
42+
paths:
43+
migrations: /your/full/path
44+
```
45+
46+
也可以提供多个路径
47+
48+
```
49+
paths:
50+
migrations:
51+
- application/module1/migrations
52+
- application/module2/migrations
53+
```
54+
55+
可以使用在你的路径中使用 `%%PHINX_CONFIG_DIR%% `
56+
57+
```
58+
paths:
59+
migrations: %%PHINX_CONFIG_DIR%%/your/relative/path
60+
```
61+
62+
你也可以定义正则表达式的路径
63+
64+
```
65+
paths:
66+
migrations: %%PHINX_CONFIG_DIR%%/module/*/{data,scripts}/migrations
67+
```
68+
69+
## 自定义迁移脚本基类
70+
71+
Phinx 默认迁移脚本基类是 AbstractMigration 。可以在配置文件的 `migration_base_class` 设置自定义的基类
72+
73+
```
74+
migration_base_class: MyMagicalMigration
75+
```
76+
77+
## Seed 路径
78+
79+
第二个选项指定了Seed放置目录。 默认是` %%PHINX_CONFIG_DIR%%/db/seeds`
80+
81+
> `%%PHINX_CONFIG_DIR%% 自动替换为项目根目录`
82+
83+
如果要重写Seed目录,需要增加以下代码到 yaml 配置文件
84+
85+
```
86+
paths:
87+
seeds: /your/full/path
88+
```
89+
90+
也可以提供多个路径
91+
92+
```
93+
paths:
94+
seeds:
95+
- /your/full/path1
96+
- /your/full/path2
97+
```
98+
99+
可以使用在你的路径中使用 `%%PHINX_CONFIG_DIR%% `
100+
101+
```
102+
paths:
103+
seeds: %%PHINX_CONFIG_DIR%%/your/relative/path
104+
```
105+
106+
你也可以定义正则表达式的路径
107+
108+
```
109+
paths:
110+
seeds: %%PHINX_CONFIG_DIR%%/your/relative/path
111+
```
112+
113+
## 环境
114+
115+
Phinx一个重要功能就是支持多个数据库环境。可以在本地开发环境使用迁移脚本,同样的脚本也可以在线上环境使用。环境数据在 `enviroments`
116+
117+
```
118+
environments:
119+
default_migration_table: phinxlog
120+
default_database: development
121+
production:
122+
adapter: mysql
123+
host: localhost
124+
name: production_db
125+
user: root
126+
pass: ''
127+
port: 3306
128+
charset: utf8
129+
collation: utf8_unicode_ci
130+
```
131+
132+
可以定义一个新的环境叫做 `production`
133+
134+
有一种情况,当多个开发者工作在不同的开发环境,或者当你需要根据不同的目的(分支,测试等)来区分环境时,可以使用环境变量 PHINX\_ENVIRONMENT 覆盖 yaml文件中的默认环境
135+
136+
export PHINX_ENVIRONMENT=dev-`whoami`-`hostname`
137+
138+
## 表前缀后缀
139+
140+
可以定义数据表的前缀后缀
141+
142+
```
143+
environments:
144+
development:
145+
....
146+
table_prefix: dev_
147+
table_suffix: _v1
148+
testing:
149+
....
150+
table_prefix: test_
151+
table_suffix: _v2
152+
```
153+
154+
## Socket 连接
155+
156+
当使用 MySQL adapter 时,可以用sockets连接替换网络连接。使用 `unix_socket` 配置 socket
157+
158+
```
159+
environments:
160+
default_migration_table: phinxlog
161+
default_database: development
162+
production:
163+
adapter: mysql
164+
name: production_db
165+
user: root
166+
pass: ''
167+
unix_socket: /var/run/mysql/mysql.sock
168+
charset: utf8
169+
```
170+
171+
## 外部变量
172+
173+
Phinx会自动抓取所有以 PHINX\_ 为前缀的环境变量并使用在配置文件中。这个值将被 %%框在里面,注意名字要完全一致。比如`%%PHINX_DBUSER%%`。这很有用,当你不想你的数据库信息放进版本库中可以使用这个功能。
174+
175+
```
176+
environments:
177+
default_migration_table: phinxlog
178+
default_database: development
179+
production:
180+
adapter: mysql
181+
host: %%PHINX_DBHOST%%
182+
name: %%PHINX_DBNAME%%
183+
user: %%PHINX_DBUSER%%
184+
pass: %%PHINX_DBPASS%%
185+
port: 3306
186+
charset: utf8
187+
```
188+
189+
## 支持的 Adapter
190+
191+
Phinx 当前支持以下数据库adapter
192+
193+
* [MySQL](http://www.mysql.com/):指定 `mysql` adapter
194+
195+
* [PostgreSQL](http://www.postgresql.org/):指定 `pssql `adapter
196+
197+
* [SQLite](http://www.sqlite.org/):指定 `sqlite` adapter
198+
199+
* [SQL Server](http://www.microsoft.com/sqlserver):指定 `sqlsrv` adapter
200+
201+
### SQLite
202+
203+
声明 SQLite 数据库:
204+
205+
```
206+
environments:
207+
development:
208+
adapter: sqlite
209+
name: ./data/derby
210+
testing:
211+
adapter: sqlite
212+
memory: true # Setting memory to *any* value overrides name
213+
```
214+
215+
## Version 顺序
216+
217+
当执行回滚或者打印迁移脚本状态时,Phinx 顺序通过 `version_order` 控制
218+
219+
* `creation` (默认):迁移脚本按照创建时间排序,也就是按照文件名排序
220+
* `execution`:迁移脚本按照执行顺序排序,也就是开始时间
221+
222+
223+

0 commit comments

Comments
 (0)