0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Symfony】Doctrineマイグレーションコマンド逆引きチートシート

Posted at

#【Symfony】Doctrineマイグレーションコマンド逆引きチートシート

はじめに

  • Symfony (Doctrine) でDBスキーマを管理するdoctrine:migrationsは非常に強力だが、コマンドの種類が多く、オプションも忘れがち。
  • この記事は「やりたいこと」をベースに、どのコマンドを実行すればよいかを素早く参照できる「逆引きチートシート」です。

基本の3大コマンド

  • まず、これだけは覚えておきたい基本的なコマンド3つを紹介します。
    1. doctrine:migrations:diff (差分ファイルの生成)
    1. doctrine:migrations:migrate (マイグレーションの実行)
    1. 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 コマンドは多いが、「やりたいこと」とセットで覚えれば怖くない。
  • このチートシートが開発の助けになれば幸いです。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?