- マイグレーションファイルを使用する方法:
最初に、マイグレーションファイルを作成します。ターミナルで以下のコマンドを実行します:
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
列と外部キー制約で関連付けています。
- 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 で外部キー列を追加する方法とコード例の説明です。