実行中の1つ以上のテーブルを持つ既存のデータベースを考える
./symfony doctrine:generate-migrations-db
テーブルごとに移行ファイルが作成されます。同様に/lib/model/doctrine
、実行中の既存のモデル クラスで満たされたようなディレクトリが与えられた場合、
./symfony doctrine:generate-migrations-models
モデルごとに移行ファイルが作成されます。
データベースにテーブルがあり、schema.yml の内容がある場合とない場合、および にモデルがない場合lib/model/doctrine
は、database.yml ファイルにデータベースに正しく接続するための資格情報があることを確認するだけです。
移行ファイルが生成されない問題を理解したら、移行を開始するようなことをします。
- を使用して、既存のデータベースから新しいスキーマを生成します
./symfony doctrine:build-schema
- スキーマ ファイルを手動でクリーンアップし、モデル ファイルに既に存在するリレーションを再確立します (存在する場合)。
- 新しい空のデータベース
config/databases.yml
を指すように再構成する
- で移行を構築し
./symfony doctrine:generate-migrations-diff
ます。これにより、スキーマ ファイルに基づいて移行が作成され、(空の)データベースが最新の状態になります
- 実行
./symfony doctrine:migrate
してエラーを監視します。スキーマ ファイルを修正して修正します。手順 4 で作成した移行を削除します。データベースをフラッシュし、手順 4./symfony doctrine:drop-db && ./symofny doctrine:build-db
に戻ります。スキーマがエラーなしで実行できる移行ファイルのクリーンなセットを生成するまで続行します。
- でモデルを再構築します
./symfony doctrine:build --model --forms --filters
これで、クリーンなschema.yml
ファイル、空のデータベースを最新の状態にできるクリーンな移行、およびschema.yml
ファイルとデータベースに直接関連するモデルができました。
データベースに新しい変更を加えたい場合は、次のように簡単になりました
- 必要な変更を行います
schema.yml
- 走る
./symfony doctrine:generate-migrations-diff
- 生成された移行を手動で確認する
- 実行
./symfony doctrine:migrate
して、移行がエラーなしで実行されることを確認します
- モデル、フォーム、フィルターを再構築する
./symfony doctrine:build --model --forms --filters
このプロセスを実行することは、時々イライラすることがありますが、構築するための本当に優れたベースを作成するために一度だけ実行する必要があることです.