在使用migration功能之前晚顷,請至少閱讀三遍官方文檔
migration功能雖然表面看上去比較簡單掌眠,但其中要是一不留神,就會遇到很多很多錯誤
功能
快速命令
- 創(chuàng)建模型并生成migration文件
php artisan make:model <model> -m - 快速回滾
php artisan migrate:rollback - 快速填充
php artisan migrate --seed - 快速回滾填充
php artisan migrate:refresh --seed
設置
- 指定存儲引擎(默認MyISAM)
$table->engine = 'InnoDB'; - 指定自增主鍵
$table->increments('id'); - 可空timestamp
$table->nullableTimestamps(); - 軟刪除
$table->softDeletes(); - 字段說明
$table->string('code')->comment('編碼'); - 外鍵約束
$table->integer('foreign_id')->nullable()->unsigned()->comment('comment');
$table->foreign('foreign_id')->references('id')->on('foreign_talbe')->onDelete('cascade');
特別注意
1创葡、外鍵問題
在添加外鍵的時候创肥,一定要確保依賴的外鍵表要提前創(chuàng)建。
如果已經(jīng)創(chuàng)建了瞎访,則可以通過修改migration文件名的時間來更改migration的生成順序腻贰。
2、model factory
model factory用于定義假數(shù)據(jù)扒秸,具體用法可以參考fzaninotto/faker的用法
- 創(chuàng)建關聯(lián)外鍵
在model factory文件中播演,可以使用elequent將數(shù)據(jù)取出來,可以參考以下用法
$sales_orders = NewSalesOrder::select('id', 'code')->get()->toArray();
- 多個model factory文件
可以將model factories文件分割成單個文件伴奥,即每個model的factory定義都保存在一個單獨的文件下(只需要放在/database/factories下即可)写烤,文件名可以命名為<ModelFactory.php>即可
3、seeder
在定義好migration和model factory之后拾徙,在seeder里面調用即可(要注意順序洲炊,否則可能外鍵關聯(lián)會出現(xiàn)問題)
factory(Chemical::class, 10)->create();
4、更改模型名或表名
如果需要更改表名,不推薦直接修改migration定義的文件名暂衡,因為需要修改的地方很多询微,而且還導致migration文件里面的記錄跟migation文件不一致而導致回滾出現(xiàn)問題(對于團隊來說簡直是災難)
推薦使用laravel migration的更改表名的功能
5、要特別關注migations數(shù)據(jù)表
新手在使用的時候狂巢,或多或少都會遇到一些問題撑毛,導致migrations表的記錄和實際生成的數(shù)據(jù)表不一致
6、推薦一次只創(chuàng)建一個表
確定沒問題后唧领,再創(chuàng)建新的表藻雌。因為migration的錯誤提示,有時候并不是很明確指明問題出現(xiàn)在哪里