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変更の再現性・安全性が大きく向上する