#【Symfony】Doctrineマイグレーションコマンド逆引きチートシート
はじめに
- Symfony (Doctrine) でDBスキーマを管理する
doctrine:migrationsは非常に強力だが、コマンドの種類が多く、オプションも忘れがち。 - この記事は「やりたいこと」をベースに、どのコマンドを実行すればよいかを素早く参照できる「逆引きチートシート」です。
基本の3大コマンド
- まず、これだけは覚えておきたい基本的なコマンド3つを紹介します。
-
-
doctrine:migrations:diff(差分ファイルの生成)
-
-
-
doctrine:migrations:migrate(マイグレーションの実行)
-
-
-
doctrine:migrations:status(実行状態の確認)
-
【逆引き】やりたいこと別チートシート
1. Entityの変更をDBに反映したい
-
概要: Entityファイル(
src/Entity/)を変更・追加した時の操作です。 -
Step 1: 差分ファイルを作成する
php bin/console doctrine:migrations:diff- (実行結果の例)
-
Step 2: マイグレーションを実行する
php bin/console doctrine:migrations:migrate- (実行結果の例)
2. マイグレーションの状況を確認したい
- 概要: 現在どのバージョンまで適用されているか、未適用のマイグレーションは何かを確認します。
-
コマンド:
php bin/console doctrine:migrations:status -
TIPS: 特定のバージョンの詳細(SQLなど)を確認する
php bin/console doctrine:migrations:version YYYYMMDDHHMMSS --show-version
3. 安全にマイグレーションを実行したい (Dry Run)
- 概要: 実際にDBに変更を加えず、実行されるSQLだけを確認したい(特に本番環境前)。
-
コマンド:
php bin/console doctrine:migrations:migrate --dry-run -
TIPS: SQLをファイルに出力する
php bin/console doctrine:migrations:migrate --write-sql=/path/to/output.sql
4. 特定のバージョンに戻したい (ロールバック)
- 概要: 直前のマイグレーションを取り消したり、指定したバージョンまで戻したりします。
-
直前のバージョンに戻す
php bin/console doctrine:migrations:migrate prev
-
指定したバージョンに戻す(または進める)
php bin/console doctrine:migrations:migrate YYYYMMDDHHMMSS- (注意点:
down()メソッドが正しく実装されている必要がある)
5. マイグレーションファイルを手動で作成したい
- 概要: Entityの変更差分ではなく、手動でデータ移行SQLなどを書きたい場合。
-
コマンド:
php bin/console doctrine:migrations:generate - (生成される空のファイルと、
up(),down()の説明)
6. マイグレーションの実行履歴を操作したい
- 概要: ファイルは存在するが「実行済み」扱いにしたい、またはその逆を行いたい場合。
-
特定のバージョンを「実行済み」としてマークする
php bin/console doctrine:migrations:version YYYYMMDDHHMMSS --add
-
特定のバージョンを「未実行」としてマークする
php bin/console doctrine:migrations:version YYYYMMDDHHMMSS --delete
おわりに
-
doctrine:migrationsコマンドは多いが、「やりたいこと」とセットで覚えれば怖くない。 - このチートシートが開発の助けになれば幸いです。