0

自動インクリメントを共有しないDoctrine2にCTIを設定することは可能ですか?たとえば、Petエンティティと2つのサブクラスがCatありDogます。ただし、2匹の犬と1匹の猫を作成すると、両方のエンティティの次のIDは4になりDogますCat。独自の自動インクリメントが必要でした。

4

1 に答える 1

1

教義に関係なく、これがどのように機能するかわかりません。

どのエンティティを期待するかわからず、IDしか持っていない場合はどうなりますか?たとえば、ID 4のペットを取得しますか?

基本クラスでクエリを実行することはできません。これは、IMHOが継承の目的を破っています。

CTIを使用すると、個別のテーブルを取得できますが、それでも単なる継承であり、CTIは単なるオブジェクトリレーショナルマッピングシェマです。

オブジェクトモデルの観点からは、同じIDを持つ同じタイプの2つのエンティティを持つことは意味がありません。

したがって、所有しているものに固執するか、継承を完全に取り除き、CatとDogを2つの独立したエンティティとして管理することができます。私はあなたが最初のオプションに固執することをお勧めします。

また、CTIでは、猫と犬には自動インクリメントはなく、ペットにのみ自動インクリメントがあります。子テーブルは、IDの生成方法に関係なく、親からIDをコピーするだけです。

于 2013-01-14T19:10:02.360 に答える