Doctrine2単一テーブル継承リポジトリから混合オブジェクトタイプの結果セットを取得するにはどうすればよいですか?

ioleo

次のスキーマの場合:

動物-年齢-性別-サイズ

猫は動物を拡張します-fur_color

ヘビは動物を拡張します-scales_color

象は動物を拡張します-tusks_size

私が行うと$em->getRepository('AcmeDemoBundle:Animal')->findAll()、私は上のコレクションを受け取るだろうAnimal、そのサブクラスのプロパティなしオブジェクト。

その場合$em->getRepository('AcmeDemoBundle:Cat')->findAll()、サブクラス(Cat)プロパティを持つオブジェクトを受け取りますが、Catオブジェクトのみを受け取ります(ヘビや象は受け取りません)。

1)すべての動物を取得する方法はありますが、基本の動物オブジェクトとしてではなく、実際にはそれらの葉のサブクラスタイプを取得しますか?

例えば。このようなデータベースの場合:

動物テーブル:

ID  | discr | age | gender | size | fur_color | scales_color | tusks_size
1   | snake | 2   | male   | 20ft | NULL      | green        | NULL
2   | cat   | 3   | female | 5ft  | red       | NULL         | NULL
3   | eleph | 6   | male   | 99ft | NULL      | NULL         | 40ft.
4   | cat   | 2   | male   | 6ft  | grey      | NULL         | NULL

以下のコレクションを受け取りたいのですが。

  • ヘビ(id:1、年齢:2、性別:男性、サイズ:20フィート、scales_color:緑)
  • 猫(id:2、年齢:3、性別:女性、サイズ:5フィート、fur_color:赤)
  • 象(id:3、年齢:6、性別:女性、サイズ:99フィート、牙サイズ:40フィート)
  • 猫(id:4、年齢:2、性別:男性、fur_color:灰色)

2)STIで不可能な場合...クラステーブル継承で可能ですか?

ioleo

確かに、構成にエラーがあったようです。@Bezと@Ceradが提案したように、バンドルを再作成してエンティティを再度書き込むと、問題が修正されました。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ