Tech Starlog

Laravelマイグレーションの基本的な使い方

投稿日:2026/01/16

Laravelでは、データベースのテーブル構造を マイグレーション(Migration)で管理します。
SQLファイルを直接管理するのではなく、PHPコードとしてスキーマ変更を記録・再現できる点が特徴です。

本記事では、Laravelマイグレーションの基本的な使い方について、次の内容を解説します。

  • マイグレーションとは何か
  • マイグレーションファイルの作成方法
  • テーブルの作成・カラム定義
  • マイグレーションの実行・ロールバック
  • よく使う運用パターン

マイグレーションとは?

マイグレーションとは、データベースの構造変更をコードで管理する仕組み です。

具体的には、次のような変更をコードとして履歴管理します。

  • テーブルの作成・削除
  • カラムの追加・変更・削除
  • インデックスの追加
  • 外部キー制約の設定

マイグレーションを使うことで、

  • 開発環境・本番環境で同じ構造を再現できる
  • チーム全員が同じDB構成を共有できる
  • 変更履歴がGitで管理できる

といったメリットがあります。


マイグレーションファイルの作成

artisanコマンドで作成する

以下のコマンドでマイグレーションファイルを作成します。

php artisan make:migration create_samples_table

作成されるファイルは、次のディレクトリに生成されます。

database/migrations/2026_01_16_000000_create_samples_table.php

ファイル名の先頭に付いているタイムスタンプ順で実行されます。


テーブルを作成する

upメソッドを編集する

生成されたマイグレーションファイルを編集します。

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('samples', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->text('body');
            $table->boolean('is_published')->default(false);
            $table->timestamps();
        });
    }

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

よく使うカラム定義

メソッド
主キー $table->id()
文字列 $table->string('name')
長文 $table->text('body')
数値 $table->integer('count')
真偽値 $table->boolean('flag')
日時 $table->timestamp('published_at')
created_at / updated_at $table->timestamps()

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

実行

php artisan migrate

未実行のマイグレーションがすべて実行され、テーブルが作成されます。

実行状況の確認

php artisan migrate:status

どのマイグレーションが実行済みかを一覧で確認できます。


ロールバック(巻き戻し)

直前のマイグレーションを戻す

php artisan migrate:rollback

直前に実行したバッチをまとめて取り消します。

すべてリセットする

php artisan migrate:fresh

すべてのテーブルを削除して、最初からマイグレーションを実行し直します。 ※ 本番環境では使用しないでください。


カラムを追加・変更する

カラム追加の例

php artisan make:migration add_views_to_samples_table
Schema::table('samples', function (Blueprint $table) {
    $table->integer('views')->default(0);
});

カラム削除の例

Schema::table('samples', function (Blueprint $table) {
    $table->dropColumn('views');
});

よく使う運用ルール

  • 既存マイグレーションは編集しない
  • 変更は必ず新しいマイグレーションで追加する
  • 本番データがある環境で migrate:fresh は使わない
  • マイグレーションはGitで必ず管理する

よくあるトラブルと注意点

マイグレーションが失敗する

  • カラム名の重複
  • 外部キー制約の順序ミス
  • 既存データとの型不整合

エラーメッセージを確認し、該当マイグレーションを修正します。


チーム開発での競合

複数人が同時にマイグレーションを追加すると、
実行順の競合やテーブル定義の衝突が起きることがあります。

  • 命名規則を統一する
  • 早めにマージする
  • 影響範囲をPull Requestに明記する

といった運用が重要です。


まとめ

  • マイグレーションはDB構造をコードで管理する仕組み
  • artisanコマンドで作成・実行・巻き戻しができる
  • チーム開発では運用ルールが重要
  • DB変更の再現性・安全性が大きく向上する