Laravel 5.8 で外部キー列を追加する方法


  1. マイグレーションファイルを使用する方法:

最初に、マイグレーションファイルを作成します。ターミナルで以下のコマンドを実行します:

php artisan make:migration add_foreign_key_to_table_name --table=table_name

このコマンドは、"add_foreign_key_to_table_name" という名前の新しいマイグレーションファイルを生成します。"table_name" は外部キーを追加するテーブルの名前です。

次に、生成されたマイグレーションファイルを開き、up メソッド内に外部キーの定義を追加します。例えば、"users" テーブルに "role_id" という外部キー列を追加する場合、以下のようになります:

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddForeignKeyToUsersTable extends Migration
{
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->unsignedBigInteger('role_id')->nullable();
            $table->foreign('role_id')->references('id')->on('roles');
        });
    }
// rollback メソッドも追加することを忘れないでください
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropForeign(['role_id']);
            $table->dropColumn('role_id');
        });
    }
}

上記の例では、users テーブルに role_id 列を追加し、その列を roles テーブルの id 列と外部キー制約で関連付けています。

  1. Schema Builder を使用する方法:

別の方法として、Schema Builder を使用して直接外部キー列を追加することもできます。以下は例です:

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddForeignKeyToUsersTable extends Migration
{
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->unsignedBigInteger('role_id')->nullable();
            $table->foreign('role_id')->references('id')->on('roles');
        });
    }
// rollback メソッドも追加することを忘れないでください
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {
            $table->dropForeign(['role_id']);
            $table->dropColumn('role_id');
        });
    }
}

上記の例では、users テーブルに role_id 列を追加し、その列を roles テーブルの id 列と外部キー制約で関連付けています。

以上が、Laravel 5.8 で外部キー列を追加する方法とコード例の説明です。