WEB

[Laravel8]外部キー制約の追加方法

WEB
この記事は約2分で読めます。

はじめに

こんにちは!

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をちょこちょこ触る予定なので、気づいたことや変更点を書けたらいいな〜