3

私は現在DoctrineでSymfony2を使用しています。Doctrine でリレーションシップを使用せずに、いくつかの外部キーをデータベースに直接追加しました。を実行するたびにdoctrine:schema:update --force、すべての外部キーが削除されるようです。これは、実行することによって確認されますdoctrine:schema:update --dump-sql

doctrine が手動で作成された外部キーをドロップしないようにする方法はありますか? または、関係のない注釈を使用して外部キーを作成する方法はありますか?

4

2 に答える 2

2

sgoettschkesのように、あなたが求めていることを正確に行うことは可能ではないと思います (しかし、将来のバージョンのためにそれについてチケットを書くことはできます!

私はそうは思わない。doctrine を使用してデータベーススキーマを 100% 定義するか、更新をまったく使用しない (データベースを手動で変更する) かを決定する必要があります。

ただし、それまでは、ネイティブ SQL を使用してスクリプトを作成し、doctrine schema:update の中で (後に) 実行することをお勧めします。

于 2012-10-08T15:46:05.257 に答える
0

本番環境では doctrine:schema:update を使用しないでください。Doctrine Migrations to run in production を参照して、デプロイ後にどのクエリを実行しているかを正確に把握してください。

インデックスを手動で追加するか、名前を手動で変更できます。スキーマの更新機能は、スキーマの異なるバージョン間で頻繁に変更でき、データベースのコンテンツの価値がはるかに低い開発中に使用することを意図しています。開発中にインデックスをテストしたい場合は、そのような場合に備えて手動でインデックスを再作成できますが、そのようなケースはあまり起こらないと思います。

とにかく関係を定義したくない理由がわかりません。これは、このインデックスと、クエリによって無効にできるその他の機能を作成することだけであるためです。

于 2012-10-11T22:54:59.273 に答える