Laravelの開発において、データベースのバージョン管理を行う「マイグレーション(Migration)」。 今回は、よく使うマイグレーションファイルの作成方法から、カラム定義の書き方、実行コマンドまで、逆引き的に使える備忘録としてまとめました。
1. マイグレーションファイルの作成コマンド
基本的には php artisan make:migration コマンドを使用します。命名規則に従うことで、Laravelが自動的にテーブル名などを推測してコードを生成してくれます。
新規テーブルを作成する場合
Bash
php artisan make:migration create_flights_tablecreate_xxx_tableという名前にすると、自動的にテーブル作成用のスキーマ(Schema::create)が用意されます。
既存のテーブルを変更・カラム追加する場合
Bash
php artisan make:migration add_status_to_flights_tableadd_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_atとupdated_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_... でファイルを作り、up と down の両方を整合性が取れるように書く」という基本を押さえておけば、安全にデータベースを管理できます。



コメント