🍈
Laravel10のmigrationで外部キーの書き方など
Laravelのmigration
migrationとは
データベースの作成や編集、削除などを管理することができる。
LaravelのSchemaファサードは、Laravelがサポートするすべてのデータベースシステムに対し、テーブルを作成、操作するために特定のデータベースに依存しないサポートを提供します
migration方法
php artisan make:migration create_flights_table
こちらのコマンドでマイグレーションファイルが作られる
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* マイグレーションの実行
*
* @return void
*/
public function up()
{
Schema::create('flights', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('airline');
$table->timestamps();
});
}
/**
* マイグレーションを戻す
*
* @return void
*/
public function down()
{
Schema::drop('flights');
}
};
このようにカラムを書くことができる。
外部キー制約の書き方
php artisan make:migration create_airPort_table
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* マイグレーションの実行
*
* @return void
*/
public function up()
{
Schema::create('air_port', function (Blueprint $table) {
$table->id();
$table->bigInteger('flight_id')->unsigned();
$table->foreign('flight_id')->references('id')->on('flights')->OnDelete('cascade');
$table->string('airline');
$table->timestamps();
});
}
/**
* マイグレーションを戻す
*
* @return void
*/
public function down()
{
Schema::drop('flights');
}
};
のようにreferencesで結びつくカラムとonでそのテーブル名を書いてあげることで外部キー制約を宣言することができる。
Discussion