【Laravel 5.1】 外部キー制約時の注意

外部キー制約時は、「型」+「属性」共に一致している必要がある点に注意

[参考資料] https://qiita.com/0w0/items/4a9cb7d27794bfb93d46

increments()で作ったカラムには、実は裏でunsined(符号無し)属性が付与される。 要は採番項目なので正の値しか登録できないわけだが、 役割テーブル側のuser_idとauthority_idには同様の制約を付けていない。 つまり、形式の不一致で落ちている。

まさにこれにハマっていた。

unsigned()メソッドで処理して解決。





dropForeignの指定を間違えて、マイグレーションロールバックが実行できない

[参考資料] https://readouble.com/laravel/5.1/ja/migrations.html

外部キーを削除するには、dropForeignメソッドを使用します。 他のインデックスで使用されるものと似た命名規則が、 外部キーにも使用されています。 つまりテーブル名とカラム名をつなげ、"_foreign"を最後につけた名前になります。

postsテーブルのuser_idカラムから、
usersテーブルのidに紐付けた外部キー制約を外すには、

public function down() 
{

}

$table->dropForeign('posts_user_id_foreign'); として、解決。