テーブルの作成、編集

データベースに新たにテーブルを作成したり、編集したりするときは、コマンドプロンプトでアプリケーションのルートディレクトリに移動し、
php artisan make:model 作成するテーブル名 -m

の形式で記入すると、app/Models内に作成したテーブル名のファイル、database/migrationsフォルダの中に新たにファイルが作成されます。


database/migrationsフォルダの中に作成されたファイルはテーブルの列を定義したりするのに使用します。
upメソッドは、作成、または列を増やす操作、downメソッドには、テーブル削除時の操作を記入します。
return new class extends Migration
{
public function up(): void
{
Schema::create('employees', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->text('address');
$table->string('phone');
$table->date('birth_date');
$table->foreignId('depertment_id')->nullable()->constrained('depertments')->onDelete('set null');
$table->timestamps();
});
}

public function down(): void
{
Schema::dropIfExists('employees');
}
};

このように記入すると、Employeeテーブルは、重複のないid、作成日時、文字列のname、phone、テキスト形式のaddress、日付形式のbirth_day、外部参照のdepartment_idの列が作成されます。

外部参照とは、depertmentテーブルのidを使用してdepertmentテーブルのデータを取得できるようにするための紐づけのことを言います。
また、
onDelete('set null')の部分は、紐づいているdepartmentが削除されたときにどうするのかという内容となっています。
onDelete('set null')とするとdepartment削除時に参照しているemployeeのdepartmentはnullに書き換わります。
onDelete('cascade')とするとdepartment削除時に参照しているemployeeはすべて削除されます。

またこのDepartment(部署)とEmployee(社員)の関係は1つの部署に複数の社員がいるという1対多の関係となっています。

$table->フィールド->nullable()

とすることで、nullを許容するようにすることができます。