[Laravel]外部キー制約が削除できない

Laravelロゴ

Laravelで外部キー制約を削除する場合、マイグレーションのupメソッドで

public function up() {
  Schema::table('{テーブル名}', function (Blueprint $table) { 
    $table->dropForeign('{テーブル名}_{カラム名}_foreign');
  });
}

こんな感じに書いてあげればいい。
指定するインデックス名はインデックス名は通常以下のSQLで確認できる

show index from テーブル名;

しかし、プライマリキーかつ外部キー制約のインデックス注意が必要。キー名がPRIMARYになっているが、これを指定して外部キー制約を解除しようとしてもエラーになってしまいます。
実際のキー名は以下のSQLで確認できる

SHOW CREATE TABLE テーブル名;

CONSTANT の後ろあたりに書いてあるとおり、キー名は {テーブル名}_{カラム名}_foreign になっているので注意が必要。

コメント

タイトルとURLをコピーしました