【Finch】數(shù)據(jù)庫遷移插件

webman-micro/migrations
包裝 robmorgan/phinx 組件支持webman命令行
說明
Phinx 可以讓開發(fā)者簡潔的修改和維護數(shù)據(jù)庫。 它避免了人為的手寫 SQL 語句,它使用強大的 PHP API 去管理數(shù)據(jù)庫遷移。開發(fā)者可以使用版本控制管理他們的數(shù)據(jù)庫遷移。 Phinx 可以方便的進行不同數(shù)據(jù)庫之間數(shù)據(jù)遷移。還可以追蹤到哪些遷移腳本被執(zhí)行,開發(fā)者可以不再擔(dān)心數(shù)據(jù)庫的狀態(tài)從而更加關(guān)注如何編寫出更好的系統(tǒng)。
項目地址
https://github.com/webman-micro/migrations
安裝
通過composer
安裝
composer require webman-micro/migrations
官方中文文檔地址
詳細使用可以去看官方中文文檔,這里只講怎么在webman中配置使用
https://tsy12321.gitbooks.io/phinx-doc/content/
配置說明
|-- config # webman 配置文件
|-- plugin
|-- webman-micro
|-- migrations
|-- app.php # 主配置信息
|-- command.php # 自定命令
主配置信息
<?php
return [
'enable' => true,
"paths" => [
"migrations" => "database/migrations", // 遷移文件存儲路徑
"seeds" => "database/seeders" // 遷移數(shù)據(jù)文件存在路徑
],
"environments" => [
"default_migration_table" => "phinxlog", // 遷移記錄表
"default_environment" => "product", // 默認使用的環(huán)境配置
"product" => [
"adapter" => "mysql", // 使用mysql 配置
"host" => getenv("DB_HOST", '127.0.0.1'),
"name" => getenv("DB_NAME", ''),
"user" => getenv("DB_USER", ''),
"pass" => getenv("DB_PASSWORD", ''),
"port" => getenv("DB_PORT", '3306'),
"charset" => "utf8"
]
]
];
遷移文件目錄結(jié)構(gòu)
.
├── app 應(yīng)用目錄
│ ├── controller 控制器目錄
│ │ └── Index.php 控制器
│ ├── model 模型目錄
......
├── database 數(shù)據(jù)庫文件
│ ├── migrations 遷移文件
│ │ └── 20180426073606_create_user_table.php
│ ├── seeders 遷移數(shù)據(jù)
│ │ └── UserSeeder.php
......
命令行說明
migrations 遷移文件命令
命令 | 說明 |
---|---|
php webman migrations:breakpoint | 設(shè)置斷點 |
php webman migrations:create | 創(chuàng)建遷移腳本文件 |
php webman migrations:list_aliases | 列出模板類別名 |
php webman migrations:migrate | 運行執(zhí)行所有腳本 |
php webman migrations:rollback | 回滾之前的遷移腳本,與 Migrate 命令相反 |
php webman migrations:status | 打印所有遷移腳本和他們的狀態(tài) |
php webman migrations:test | 驗證配置文件 |
Breakpoint 命令
Breakpoint 命令用來設(shè)置斷點,可以使你對回滾進行限制。你可以調(diào)用 breakpoint 命令不帶任何參數(shù),即將斷點設(shè)在最新的遷移腳本上
$ php webman migrations:breakpoint -e development
可以使用 --target
或者 -t
來指定斷點打到哪個遷移版本上
$ php webman migrations:breakpoint -e development -t 20120103083322
可以使用 --remove-all
或者-r
來移除所有斷點
$ php webman migrations:breakpoint -e development -r
當(dāng)你運行 status
命令時可以看到斷點信息
Create 命令
create 命令用來創(chuàng)建遷移腳本文件。需要一個參數(shù):腳本名。遷移腳本命名應(yīng)該保持 駝峰命名法
$ php webman migrations:create MyNewMigration
打開新創(chuàng)建的遷移腳本并編寫數(shù)據(jù)庫修改。Phinx 把遷移腳本創(chuàng)建到 phinx.yml
里面指定的路徑。更多信息參考 配置
你可以重寫模板文件,并在創(chuàng)建的時候指定模板
$ php webman migrations:create MyNewMigration --template="<file>"
可以提供一個模板類,這個類必須繼承接口 Phinx\Migration\CreationInterface
$ php webman migrations:create MyNewMigration --class="<class>"
提供的模板中,類中也可以定義回調(diào),這個回調(diào)將在遷移腳本生成的時候被調(diào)用
注意:你不能同時使用 --template
和 --class
Migrate 命令
Migrate 命令默認運行執(zhí)行所有腳本,可選指定環(huán)境
$ php webman migrations:migrate -e development
可以使用 --target
或者 -t
來指定執(zhí)行某個遷移腳本
$ php webman migrations:migrate -e development -t 20110103081132
Rollback 命令
Rollback 命令用來回滾之前的遷移腳本。與 Migrate 命令相反。
你可以使用 rollback
命令回滾上一個遷移腳本。不帶任何參數(shù)
$ php webman migrations:rollback -e development
使用 --target
或者 -t
回滾指定版本遷移腳本
$ php webman migrations:rollback -e development -t 20120103083322
指定版本如果設(shè)置為0則回滾所有腳本
$ php webman migrations:rollback -e development -t 0
可以使用 --date
或者 -d
參數(shù)回滾指定日期的腳本
$ php webman migrations:rollback -e development -d 2012
$ php webman migrations:rollback -e development -d 201201
$ php webman migrations:rollback -e development -d 20120103
$ php webman migrations:rollback -e development -d 2012010312
$ php webman migrations:rollback -e development -d 201201031205
$ php webman migrations:rollback -e development -d 20120103120530
如果斷點阻塞了回滾,你可以使用 --force
或者-f
參數(shù)強制回滾
$ php webman migrations:rollback -e development -t 0 -f
Status 命令
Status 命令可以打印所有遷移腳本和他們的狀態(tài)。你可以用這個命令來看哪些腳本被運行過了
$ php webman migrations:status -e development
當(dāng)所有腳本都已經(jīng)執(zhí)行(up)該命令將退出并返回 0
- 1:至少有一個回滾過的腳本(down)
- 2:至少有一個未執(zhí)行的腳本
Seed 數(shù)據(jù)填充文件命令
命令 | 說明 |
---|---|
php webman seed:create | 創(chuàng)建 seed 類 |
php webman seed:run | 執(zhí)行所有 seed |
Seed Create 命令
Seed Create 命令可以被用來創(chuàng)建 seed 類。需要一個類名參數(shù)。命名格式使用駝峰法。
$ php webman seed:create MyNewSeeder
Seed Run 命令
默認Seed run 命令會執(zhí)行所有 seed。
$ php webman seed:run -e development
如果你想要指定執(zhí)行一個,只要增加 -s 參數(shù)并接 seed 的名字
$ php webman seed:run -e development -s MyNewSeeder