【Laravel】マイグレーションファイルの書き方・コマンドまとめ

Laravel

Laravelの開発において、データベースのバージョン管理を行う「マイグレーション(Migration)」。 今回は、よく使うマイグレーションファイルの作成方法から、カラム定義の書き方、実行コマンドまで、逆引き的に使える備忘録としてまとめました。


1. マイグレーションファイルの作成コマンド

基本的には php artisan make:migration コマンドを使用します。命名規則に従うことで、Laravelが自動的にテーブル名などを推測してコードを生成してくれます。

新規テーブルを作成する場合

Bash
php artisan make:migration create_flights_table
  • create_xxx_table という名前にすると、自動的にテーブル作成用のスキーマ(Schema::create)が用意されます。

既存のテーブルを変更・カラム追加する場合

Bash
php artisan make:migration add_status_to_flights_table
  • add_xxx_to_yyy_table という名前にすると、yyy テーブルに対する変更用のスキーマ(Schema::table)が用意されます。

2. マイグレーションファイルの基本構造

生成されたファイルには、up メソッドと down メソッドが定義されています。

PHP
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * マイグレーションの実行(テーブル・カラムの追加)
     */
    public function up(): void
    {
        Schema::create('flights', function (Blueprint $table) {
            $table->id(); // 自動インクリメントのID
            $table->string('name');
            $table->timestamps(); // created_at と updated_at
        });
    }

    /**
     * マイグレーションのロールバック(実行前の状態に戻す)
     */
    public function down(): void
    {
        Schema::dropIfExists('flights');
    }
};
  • up(): php artisan migrate を実行したときに処理されます。
  • down(): ロールバック(取り消し)したときに、up で行った処理を完全に元に戻すための処理を書きます。

3. よく使うカラムタイプ(データ型)

Blueprint $table オブジェクトに対して、以下のようなメソッドを繋げてカラムを定義します。

文字列・テキスト

  • $table->string('column', length); : VARCHAR 型(第2引数で文字数指定可能、デフォルト255)
  • $table->text('column'); : TEXT 型(長い文章用)

数値・真偽値

  • $table->integer('column'); : INTEGER 型(整数)
  • $table->bigInteger('column'); : BIGINT 型(大きな整数)
  • $table->boolean('column'); : BOOLEAN 型(真偽値。内部的には 1 / 0)

日付・時間

  • $table->date('column'); : DATE 型(日付)
  • $table->dateTime('column'); : DATETIME 型(日時)
  • $table->timestamps(); : created_atupdated_at を自動作成

外部キー(リレーション)

  • $table->foreignId('user_id')->constrained();
    • users テーブルの id を参照する外部キー(user_id)を自動作成します。

4. カラム修飾子(Modifiers)

カラム定義の末尾にチェーンで繋ぐことで、オプションの属性を追加できます。

  • ->nullable() : NULL を許容する
  • ->default($value) : デフォルト値を設定する(例: ->default(0)
  • ->comment('コメント') : データベース上にカラムの説明を追加する
  • ->after('column') : (既存テーブル変更時)指定したカラムの後ろに配置する

記述例:

PHP
$table->string('email')->nullable()->comment('ユーザーのメールアドレス');

5. マイグレーション実行コマンド一覧

これだけ覚えておけば困らない、主要なArtisanコマンドです。

未実行のマイグレーションを実行する

Bash
php artisan migrate

直前のマイグレーションのみを取り消す(ロールバック)

Bash
php artisan migrate:rollback
  • 失敗した時や、少し修正したい時に使います。

データベースを完全に初期化して最初から実行する

Bash
php artisan migrate:fresh
  • 注意:既存のテーブルをすべて削除(Drop)してから実行するため、保存されていたデータはすべて消去されます。 開発初期段階などでスキーマを再構築したい時に便利です。

マイグレーションの実行状況を確認する

Bash
php artisan migrate:status
  • どのファイルが実行済み(Ran)で、どれが未実行(No)かを一覧で確認できます。

まとめ

Laravelのマイグレーションは、チーム開発や本番環境へのデプロイ時にデータベースの状態を完全に同期できる強力な機能です。 「新しいカラムを追加するときは add_... でファイルを作り、updown の両方を整合性が取れるように書く」という基本を押さえておけば、安全にデータベースを管理できます。

コメント