マイグレーションファイルを作成するとき、オプションをつけた時とつけなかった時の違いを調べてみました。
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=テーブル名
を使用すると効率的。
既存のテーブルに変更を加える場合: オプションなしを選択し、手動でスキーマ変更を記述します。