マイグレーションファイルを作成するとき、オプションをつけた時とつけなかった時の違いを調べてみました。
sail artisan make:migration create_message_table sail artisan make:migration create_message_table --create=テーブル名
結論、--create=テーブル名オプションを付けた場合と付けない場合では、マイグレーションファイルの生成内容が異なります。
もくじ
1. –create=テーブル名を付けた場合
以下のコードを実行したときどうなるかです。
オプションを使用すると、新しいテーブルを作成するためのコードが自動生成されます。
sail artisan make:migration create_message_table --create=テーブル名
生成されるマイグレーションファイル
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::create('messages', function (Blueprint $table) {
$table->id(); // 主キー
$table->timestamps(); // created_at, updated_at カラム
});
}
public function down()
{
Schema::dropIfExists('messages'); // テーブル削除
}
};オプションをつけたときの特徴
Schema::createが自動的に記述され、指定したテーブル (例:messages(テーブル名は複数形)) を作成するコードが含まれます。- デフォルトで
idカラム(主キー)とtimestampsカラム(created_atとupdated_at)が生成されます。 - 作成用のテンプレートが含まれるため、テーブル作成が容易です。
2. –create=テーブル名を付けなかった場合
以下のコードを実行したときどうなるかです。
オプションを省略すると、マイグレーションファイルには 空のテンプレート が生成されます。
sail artisan make:migration create_message_table
生成されるマイグレーションファイル
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
//
}
public function down()
{
//
}
};
オプションをつけなかったときの特徴
phpコードをコピーするSchema::create('messages', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
違いまとめ
| 項目 | –create=テーブル名 あり | –create=テーブル名 なし |
|---|---|---|
| 生成される内容 | テーブル作成用のコードが自動生成される | 空のテンプレート |
| 用途 | 新規テーブルを作成する場合に便利 | 任意のスキーマ変更に柔軟に対応できる |
| 手動作業の必要性 | 最小限で済む | 自分でSchema::createなどを書く必要あり |
どちらを使うべきか?
新しいテーブルを作成する場合: --create=テーブル名 を使用すると効率的。
既存のテーブルに変更を加える場合: オプションなしを選択し、手動でスキーマ変更を記述します。

うさぎ
おつかれえええええ!!!
