マイグレーションは何のためにありますか。
DB のスキーマ変更を PHP のコードとして書き、バージョン管理に載せるためのものです。本番への反映漏れを防ぎ、参画した人が migrate だけで同じ構造を再現できる状態を作ります。
面接官が見ているのはDB スキーマをコードで管理する発想があるか。
よくある答えと、面談でどう見られるか
- DB のスキーマ変更をコードとして残し、全環境で同じ手順を再現するため
その通りです。誰がどの環境に何を適用したかが履歴として残るのが本質です。 - 本番の DB データを開発環境にコピーするため
それはデータの複製です。マイグレーションが扱うのは構造(スキーマ)だけです。 - サーバーを移設するときにデータを移すため
一般的な語義と混ざっています。Laravel ではスキーマ変更の管理を指します。 - テスト用のダミーデータを投入するため
それは seeder の役割です。マイグレーションは構造、seeder は中身。
模範解答
DB のスキーマ変更を PHP のコードとして記述し、バージョン管理に載せるためのものです。「開発環境でカラムを足したが本番に反映し忘れた」を防げますし、新しく参画した人も migrate を流すだけで同じ構造を再現できます。本番では確認プロンプトが出るため php artisan migrate --force を使います。