テーブルの作成、編集
データベースに新たにテーブルを作成したり、編集したりするときは、コマンドプロンプトでアプリケーションのルートディレクトリに移動し、
の形式で記入すると、app/Models内に作成したテーブル名のファイル、database/migrationsフォルダの中に新たにファイルが作成されます。
database/migrationsフォルダの中に作成されたファイルはテーブルの列を定義したりするのに使用します。
upメソッドは、作成、または列を増やす操作、downメソッドには、テーブル削除時の操作を記入します。
このように記入すると、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対多の関係となっています。
とすることで、nullを許容するようにすることができます。
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');
}
};
{
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を許容するようにすることができます。