自動インクリメントを共有しないDoctrine2にCTIを設定することは可能ですか?たとえば、Pet
エンティティと2つのサブクラスがCat
ありDog
ます。ただし、2匹の犬と1匹の猫を作成すると、両方のエンティティの次のIDは4になりDog
ますCat
。独自の自動インクリメントが必要でした。
質問する
232 次
1 に答える
1
教義に関係なく、これがどのように機能するかわかりません。
どのエンティティを期待するかわからず、IDしか持っていない場合はどうなりますか?たとえば、ID 4のペットを取得しますか?
基本クラスでクエリを実行することはできません。これは、IMHOが継承の目的を破っています。
CTIを使用すると、個別のテーブルを取得できますが、それでも単なる継承であり、CTIは単なるオブジェクトリレーショナルマッピングシェマです。
オブジェクトモデルの観点からは、同じIDを持つ同じタイプの2つのエンティティを持つことは意味がありません。
したがって、所有しているものに固執するか、継承を完全に取り除き、CatとDogを2つの独立したエンティティとして管理することができます。私はあなたが最初のオプションに固執することをお勧めします。
また、CTIでは、猫と犬には自動インクリメントはなく、ペットにのみ自動インクリメントがあります。子テーブルは、IDの生成方法に関係なく、親からIDをコピーするだけです。
于 2013-01-14T19:10:02.360 に答える