您在這裡

Laravel 5.3 Migrations 的小細節

分類: 

今天在試寫Laravel的Migrations,結果遇到不少文件沒寫的東西,只好來筆記一下了。

 

Class名稱一定要在檔名的「_」第五個位置之後。
「2017_01_01_000000_create_table.php」對應的Class是「CreateTable」,如果寫成「2017_01_01_create_table.php」,那他就會去找「Table」。

原因是 Migrator->resolve:

Str::studly(implode('_', array_slice(explode('_', $file), 4)));

 

使用「$table->increments()」時不用另外加「primary()」,因為他內附了。

 

要在同一行同時指定index/unique並設定default時,default要在最後。

// 正確
$table->string()->index()->default();

// 錯誤
$table->string()->default()->index();

因為index是由「Blueprint」提供的,他會回傳「Fluent」,所以沒有問題。
但default是由「MySqlGrammar」提供的,他只會回傳null..........Orz

 

使用「$table->timestamps()」不能在後面直接加index,可能是因為他同時設定了兩個以上欄位的關係。
因為使用「$table->rememberToken()->unique()」就沒問題了XD"

 

 

授權: