mcpField
L
laravel-migrations

laravel-migrations

github.com/fusengineデータ・データベース3462 回インストール2 週間前に更新
リポジトリ

laravel-migrations について

laravel-migrations は、Laravel 13 の開発者向けデータベース移行スキルです。Schema Builder、インデックス、外部キー、シーダーに加え、本番展開や pgvector の有効化も扱います。

主な機能

  1. 01Schema Builder によるテーブル作成と変更
  2. 02列型、インデックス、外部キーの解説
  3. 03Artisan コマンドとシードのガイド
  4. 04移行テストと安全な本番展開
  5. 05マイグレーションで pgvector を有効化

活用シーン

  1. 01テーブル作成、列追加、インデックス変更
  2. 02関連データの削除時の連動設定
  3. 03ロールバックのテストと本番移行の準備
  4. 04PostgreSQL の移行で pgvector を有効化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/fusengine/agents --skill laravel-migrations

インストール後、Claude Code で/laravel-migrationsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
columns.md
commands.md
foreign-keys.md
indexes.md
production.md
schema.md
seeding.md
testing.md
troubleshooting.md
references/templates/
CreateTableMigration.php.md
MigrationTest.php.md
ModifyTableMigration.php.md
PivotTableMigration.php.md
Seeder.php.md

詳細

Laravel 13 のデータベースマイグレーションを網羅します。テーブルの作成・変更・削除を行う Schema Builder API、50 種類以上のカラム型と修飾子、インデックスの種類(primary、unique、fulltext、spatial)、カスケードオプション付きの外部キー制約、Artisan マイグレーションコマンド、シーダー、マイグレーションのテスト、本番環境への安全な適用、トラブルシューティング、およびベクトルカラムで pgvector を有効にする Schema::ensureVectorExtensionExists() を扱います(クエリ方法については laravel-vector-search を参照してください)。

Laravel のマイグレーション

エージェントのワークフロー(必須)

実装を始める前に、name を指定して Agent を 1 回ずつ呼び出し、3 つのエージェントを並列で起動してください。

  1. fuse-ai-pilot:explore-codebase - 既存のマイグレーションを確認します
  2. fuse-ai-pilot:research-expert - Context7 を使って Laravel 13 のパターンを検証します
  3. mcp__context7__query-docs - Schema Builder の具体的な機能を確認します

実装後、検証のために fuse-ai-pilot:sniper を実行してください。


概要

機能説明
Schema Builderテーブルの作成、変更、削除
カラム50 種類以上のカラム型と修飾子
インデックスPrimary、Unique、Fulltext、Spatial
外部キーカスケードオプション付きの制約
シーダーテーブルへのデータ投入

重要なルール

  1. 必ず down() を定義する - ロールバック可能なマイグレーションにします
  2. foreignId()->constrained() を使用する - 生の unsignedBigInteger は使用しません
  3. 外部キーにインデックスを追加する - パフォーマンス上、重要です
  4. デプロイ前にロールバックをテストする - down() が機能することを検証します
  5. デプロイ済みのマイグレーションは変更しない - 新しいマイグレーションを作成します

選択ガイド

マイグレーションの種類
Need schema change?
├── New table → make:migration create_X_table
├── Add column → make:migration add_X_to_Y_table
├── Modify column → make:migration modify_X_in_Y_table
├── Add index → make:migration add_index_to_Y_table
└── Seed data → make:seeder XSeeder
カラム型の選択
用途型例
主キーid()自動インクリメント BIGINT
外部キーforeignId()->constrained()親テーブルを参照
UUID 主キーuuid()->primary()UUID
Booleanboolean()is_active
Enumenum('status', [...])order_status
JSONjson()preferences
金額decimal('price', 10, 2)99999999.99
タイムスタンプtimestamps()created_at、updated_at
論理削除softDeletes()deleted_at
外部キーのカスケード
シナリオonDelete用途
厳格な整合性restrictOnDelete()財務記録
自動クリーンアップcascadeOnDelete()投稿 → コメント
NULL として保持nullOnDelete()任意のリレーション
何もしないnoActionOnDelete()監査ログ

リファレンスガイド

基本概念
トピックリファレンス参照するタイミング
Schemaschema.mdテーブル操作
カラムcolumns.mdカラム型
インデックスindexes.mdパフォーマンス向上のためのインデックス
外部キーforeign-keys.md制約
コマンドcommands.mdArtisan コマンド
シーディングseeding.mdデータの投入
高度なトピック
トピックリファレンス参照するタイミング
テストtesting.mdマイグレーションのテスト
本番環境production.md安全なデプロイ
トラブルシューティングtroubleshooting.mdエラーの解決
テンプレート
テンプレート使用する場面
CreateTableMigration.php.md新しいテーブル
ModifyTableMigration.php.mdテーブルの変更
PivotTableMigration.php.md多対多
Seeder.php.mdシードパターン
MigrationTest.php.mdマイグレーションのテスト

クイックリファレンス

テーブルの作成
Schema::create('posts', function (Blueprint $table) {
    $table->id();
    $table->foreignId('user_id')->constrained()->cascadeOnDelete();
    $table->string('title');
    $table->text('content');
    $table->enum('status', ['draft', 'published'])->default('draft');
    $table->timestamps();
    $table->softDeletes();

    $table->index(['user_id', 'status']);
});
テーブルの変更
Schema::table('posts', function (Blueprint $table) {
    $table->string('slug')->after('title')->unique();
    $table->boolean('featured')->default(false);
});
コマンド
php artisan make:migration create_posts_table
php artisan migrate
php artisan migrate:rollback --step=1
php artisan migrate:fresh --seed

ベストプラクティス

実施すること
  • 外部キーには foreignId()->constrained() を使用します
  • よく使うクエリには複合インデックスを追加します
  • デプロイ前に down() メソッドをテストします
  • SQL のプレビューには --pretend を使用します
実施しないこと
  • デプロイ済みのマイグレーションを変更しないでください
  • down() メソッドを忘れないでください
  • Schema Builder を使わずに生の SQL を使用しないでください
  • 外部キーのインデックスを省略しないでください

Laravel 13 に関する注意事項

Schema::ensureVectorExtensionExists()(pgvector)

Laravel 13 では、マイグレーションから PostgreSQL の pgvector 拡張機能を有効にするヘルパーが利用できます。エンベディングやセマンティック検索に便利です。

use Illuminate\Support\Facades\Schema;

return new class extends Migration {
    public function up(): void
    {
        Schema::ensureVectorExtensionExists();

        Schema::create('documents', function (Blueprint $table) {
            $table->id();
            $table->text('content');
            $table->vector('embedding', dimensions: 1536)->index(); // OpenAI text-embedding-3-small; HNSW cosine vector index
            $table->timestamps();
            // equivalent: $table->vectorIndex('embedding'); — removal: dropVectorIndex() (13.30+)
        });
    }
};

vector カラム/インデックスは MariaDB 11.7+ でも動作します(拡張機能は不要です)。whereVectorSimilarTo() クエリについては [[laravel-vector-search]] を参照してください。

Schema Builder 13.x の新機能
  • $table->foreignUuidFor(User::class)(13.9+)および foreignUlidFor()(13.25+)
  • ロックフリーインデックス:$table->string('email')->unique()->online();(PostgreSQL / SQL Server)
  • インデックスまたは外部キーの INPLACE DDL アルゴリズムに対応する ->inplace()(13.33+、MySQL)

コメント