更新:2024/12/02

【Laravel】マイグレーションの意味と作り方について

はるか
はるか
マイグレーションって知ってる?データベース管理の話だけど。
ふゅか
ふゅか
もちろん!Laravelでは、データベースの構造をPHPコードで管理できる仕組みだよね!

1. マイグレーションの意味

Laravelにおける「マイグレーション」とは、データベースの構造を管理・変更するための仕組みです。データベースのテーブルを作成・編集するSQL文を直接書く代わりに、PHPコードを使って定義します。これにより、データベースのバージョン管理が容易になり、チーム開発や運用がスムーズに進められます。

2. マイグレーションの特徴と利点

2.1.  データベースのバージョン管理

マイグレーションを使用すると、データベースの変更履歴をコードとして管理できます。これにより、過去の状態に戻したり、変更をやり直したりすることが可能です。

2.2. コードベースでの管理

SQL文ではなく、PHPコードでデータベースの操作を記述するため、アプリケーションのコードベースと統一して管理できます。

2.3. チーム開発の効率化

複数人での開発でも、マイグレーションファイルを共有することで同じデータベース構造を再現できます。

はるか
はるか
特徴としては、データベースの変更履歴をコードで管理できること。
ふゅか
ふゅか
そうそう!過去の状態に戻したり、変更をやり直したりもできるよね。

3. マイグレーションの作り方

Laravel10でマイグレーションを作成し、実行する流れを以下に示します。

はるか
はるか
ファイル作成は簡単。artisanコマンドを使うだけ。

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

Laravelでは、artisanコマンドを使って簡単にマイグレーションファイルを生成できます。

php artisan make:migration create_articles_table

このコマンドを実行すると、database/migrationsディレクトリにマイグレーションファイルが作成されます。ファイル名はタイムスタンプ付きで生成され、以下のようになります。

xxxx_xx_xx_xxxxxxx_create_articles_table.php

3.2. マイグレーションファイルの編集

生成されたマイグレーションファイルを開き、articlesテーブルの構造を定義します。

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('articles', function (Blueprint $table) {
            $table->id(); // 主キー
            $table->string('title'); // 記事のタイトル
            $table->text('content'); // 記事の本文
            $table->string('author')->nullable(); // 著者名
            $table->timestamps(); // created_atとupdated_at
        });
    }

    public function down(): void
    {
        Schema::dropIfExists('articles'); // テーブルを削除
    }
};
  • up メソッド: テーブルの作成やカラムの追加など、変更を適用する処理を記述します。
  • down メソッド: up メソッドで行った変更を元に戻す処理を記述します。

3.3. マイグレーションの実行

マイグレーションを実行してデータベースに反映させます。

php artisan migrate

このコマンドで、up メソッドの内容が実行され、articlesテーブルが作成されます。

3.4. ロールバック

もし変更を元に戻したい場合は、以下のコマンドを使用してロールバックします。

php artisan migrate:rollback

down メソッドが実行され、最新のマイグレーションが取り消されます。

3.5. ステータスの確認

現在のマイグレーションの適用状況を確認するには、以下のコマンドを使用します。

php artisan migrate:status

適用済みと未適用のマイグレーションを一覧で確認できます。

4. テーブルに新しいカラムを追加する

既存のarticlesテーブルに新しいカラムを追加する場合もマイグレーションを使用します。

4.1. 新しいマイグレーションファイルの作成

php artisan make:migration add_category_to_articles_table

4.2. ファイル編集

return new class extends Migration {
    public function up(): void
    {
        Schema::table('articles', function (Blueprint $table) {
            $table->string('category')->nullable(); // カテゴリーカラムを追加
        });
    }

    public function down(): void
    {
        Schema::table('articles', function (Blueprint $table) {
            $table->dropColumn('category'); // カラムを削除
        });
    }
};

4.3. 実行

php artisan migrate
PR