laravel:migrations-and-factories について
テスト可能でロールバックできるスキーマ変更を管理する、Laravel開発者向けのマイグレーションとファクトリーのガイドです。運用ルール、シードデータ、データベーステストを扱います。
主な機能
- 01モデルにマイグレーションとファクトリーを用意
- 02マイグレーションでスキーマを変更
- 03状態修飾子でファクトリーを整理
- 04リレーションでデータ構造を構築
- 05トランザクションやRefreshDatabaseでテスト
活用シーン
- 01モデルとマイグレーション、ファクトリーを作成
- 02機能テスト用のデータを生成
- 03データベースのマイグレーションを安全に戻す
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jpcaparas/ superpowers-laravel --skill laravel:migrations-and-factoriesインストール後、Claude Code で/laravel:migrations-and-factoriesを入力して読み込まれたか確認します。
詳細
マイグレーションとファクトリー
スキーマの変更を安全かつテスト可能にし、元に戻せるようにします。
コマンド
# Create model with migration + factory
sail artisan make:model Post -mfc # or: php artisan make:model Post -mfc
# Run/rollback
sail artisan migrate # or: php artisan migrate
sail artisan migrate:rollback --step=1 # or: php artisan migrate:rollback --step=1
# Fresh DB (dangerous; dev only)
sail artisan migrate:fresh --seed # or: php artisan migrate:fresh --seed
ルール
- 新しいモデルには、必ずマイグレーションとファクトリーを用意します
- マイグレーションが
mainにマージされた後は、決して編集せず、新しいマイグレーションを追加します - フィーチャーブランチでは、そのブランチで作成したマイグレーションがまだマージされていなければ、修正できます
- シーダークラスには現実的で最小限のデータセットを用意し、大規模なデータセットは外部に置きます
- Laravel 13 以降:条件付きのスキーマ変更は
Schema::hasForeignKey('posts', 'posts_user_id_foreign')で保護します。pgvector のカラムには$table->vector('embedding', dimensions: 1536)を使用します(laravel:vector-searchを参照)
ファクトリー
- ブール値フラグよりも、状態修飾子(例:
->state([...]))を優先します - ファクトリーではリレーションシップ(例:
belongsTo)を使用し、現実的なオブジェクトグラフを構築します - ファクトリーは高速に保ち、可能であれば時間のかかるセットアップはシードに移します
テスト
- テストではファクトリーを使用し、手動での挿入は避けます
- データベースにアクセスする統合テストでは、トランザクションまたは
RefreshDatabaseを使用します
コメント
Markdown 対応