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



1. マイグレーションの意味
Laravelにおける「マイグレーション」とは、データベースの構造を管理・変更するための仕組みです。データベースのテーブルを作成・編集するSQL文を直接書く代わりに、PHPコードを使って定義します。これにより、データベースのバージョン管理が容易になり、チーム開発や運用がスムーズに進められます。
2. マイグレーションの特徴と利点
2.1. データベースのバージョン管理
マイグレーションを使用すると、データベースの変更履歴をコードとして管理できます。これにより、過去の状態に戻したり、変更をやり直したりすることが可能です。
2.2. コードベースでの管理
SQL文ではなく、PHPコードでデータベースの操作を記述するため、アプリケーションのコードベースと統一して管理できます。
2.3. チーム開発の効率化
複数人での開発でも、マイグレーションファイルを共有することで同じデータベース構造を再現できます。


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

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