Laravel Migration

在使用migration功能之前,請(qǐng)至少閱讀三遍官方文檔

migration功能雖然表面看上去比較簡(jiǎn)單,但其中要是一不留神,就會(huì)遇到很多很多錯(cuò)誤

功能

快速命令

  • 創(chuàng)建模型并生成migration文件
    php artisan make:model <model> -m
  • 快速回滾
    php artisan migrate:rollback
  • 快速填充
    php artisan migrate --seed
  • 快速回滾填充
    php artisan migrate:refresh --seed

設(shè)置

  • 指定存儲(chǔ)引擎(默認(rèn)MyISAM)
    $table->engine = 'InnoDB';
  • 指定自增主鍵
    $table->increments('id');
  • 可空timestamp
    $table->nullableTimestamps();
  • 軟刪除
    $table->softDeletes();
  • 字段說(shuō)明
    $table->string('code')->comment('編碼');
  • 外鍵約束
$table->integer('foreign_id')->nullable()->unsigned()->comment('comment');
$table->foreign('foreign_id')->references('id')->on('foreign_talbe')->onDelete('cascade');

特別注意

1、外鍵問(wèn)題
在添加外鍵的時(shí)候,一定要確保依賴的外鍵表要提前創(chuàng)建。
如果已經(jīng)創(chuàng)建了,則可以通過(guò)修改migration文件名的時(shí)間來(lái)更改migration的生成順序。

2、model factory
model factory用于定義假數(shù)據(jù),具體用法可以參考fzaninotto/faker的用法

  • 創(chuàng)建關(guān)聯(lián)外鍵
    在model factory文件中,可以使用elequent將數(shù)據(jù)取出來(lái),可以參考以下用法
$sales_orders = NewSalesOrder::select('id', 'code')->get()->toArray();

  • 多個(gè)model factory文件
    可以將model factories文件分割成單個(gè)文件,即每個(gè)model的factory定義都保存在一個(gè)單獨(dú)的文件下(只需要放在/database/factories下即可),文件名可以命名為<ModelFactory.php>即可

3、seeder
在定義好migration和model factory之后,在seeder里面調(diào)用即可(要注意順序,否則可能外鍵關(guān)聯(lián)會(huì)出現(xiàn)問(wèn)題)

factory(Chemical::class, 10)->create();

4、更改模型名或表名
如果需要更改表名,不推薦直接修改migration定義的文件名,因?yàn)樾枰薷牡牡胤胶芏啵疫€導(dǎo)致migration文件里面的記錄跟migation文件不一致而導(dǎo)致回滾出現(xiàn)問(wèn)題(對(duì)于團(tuán)隊(duì)來(lái)說(shuō)簡(jiǎn)直是災(zāi)難)
推薦使用laravel migration的更改表名的功能

5、要特別關(guān)注migations數(shù)據(jù)表
新手在使用的時(shí)候,或多或少都會(huì)遇到一些問(wèn)題,導(dǎo)致migrations表的記錄和實(shí)際生成的數(shù)據(jù)表不一致

6、推薦一次只創(chuàng)建一個(gè)表
確定沒(méi)問(wèn)題后,再創(chuàng)建新的表。因?yàn)閙igration的錯(cuò)誤提示,有時(shí)候并不是很明確指明問(wèn)題出現(xiàn)在哪里

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、保存復(fù)雜的配置 場(chǎng)景:例如對(duì)于一個(gè)用戶系統(tǒng),需要很多字段來(lái)保存不同的配置,如果要為每個(gè)配置都添加一個(gè)字段的話,...
    zshanjun閱讀 529評(píng)論 0 0
  • 基于5.1 零 、關(guān)閉debug .env文件 一、Laravel 數(shù)據(jù)庫(kù)操作 1.1查詢構(gòu)建器(Query B...
    皮丘吉爾閱讀 858評(píng)論 0 0
  • 1、岳陽(yáng)樓 姜善蛇 40元一斤 2、想吃巴厘龍蝦 208元 3、臺(tái)北路王師傅豆皮 7元 4、黃太婆熱干面 馬上成為...
    順便啊閱讀 308評(píng)論 0 0
  • 事情是這樣的,你要理解一個(gè)不常看到雪的南方人在北方的寒冬里看到大雪紛飛之后的激動(dòng)與狂喜。原諒我只有粗糙的雙手,只能...
    鹿暮小姐i閱讀 349評(píng)論 0 3
  • “我希望有個(gè)如你一般的人 如山間清爽的風(fēng) 如古城溫暖的光 從清晨到夜晚 由山野到書(shū)房 只要最后是你 就好” 今晚連...
    清淺行閱讀 232評(píng)論 0 1