はじめに
こんにちは!
Laravel8を触る機会があったので、Laravel6との違う点を少しずつアウトプットしていきます!
今回は、migrationファイルでの外部キー制約の追加の仕方について、以前までと違う方法が公式に紹介されていたので、そちらについて書きます。
※ 今回の記事のやり方は、Larvel7でもできるみたいです。(試してはいないが、公式に載っていました)
環境
Laravel Framework 8.38.0
内容
早速、外部キー制約の追加方法を紹介します!
以前までのやり方
Schema::table('posts', function (Blueprint $table) {
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users');
});
Laravel7以降のやり方
Schema::table('posts', function (Blueprint $table) {
$table->foreignId('user_id')->constrained();
});
Laravel7以降は、foreignIdというカラムタイプが追加され、これを利用するとunsignedBigIntegerのカラムが作成されます。
さらに、->constrained
とメソッドチェーンすることで外部キー制約を追加することができます。
余談ですが、下記のように指定すると、親テーブルの対象カラムを削除や更新した場合に、外部キーで紐づいている子テーブルの内容も自動的に削除や更新を行なってくれます!
Schema::table('posts', function (Blueprint $table) {
$table->foreignId('user_id')->constrained()->cascadeOnUpdate()->cascadeOnDelete();
});
最後に
バージョンアップして、シンプルに書けるようになるのは便利でいいですね〜
これからもLaravel8をちょこちょこ触る予定なので、気づいたことや変更点を書けたらいいな〜