如何从Doctrine2单表继承存储库中获取混合对象类型结果集?

时间:2014-06-02 21:34:03

标签: symfony doctrine-orm single-table-inheritance

对于以下架构:

动物   - 年龄  - 性别   - 大小

Cat扩展动物   - fur_color

Snake扩展Animal   - scales_color

大象扩展动物   - tusks_size

当我$em->getRepository('AcmeDemoBundle:Animal')->findAll()时,我会收到Animal个对象的集合而没有它们的子类属性。

当我$em->getRepository('AcmeDemoBundle:Cat')->findAll()时,我会用它们的子类(Cat)属性接收对象,但是我只会得到 Cat 对象(没有蛇或大象)。

1)我是否可以获得所有动物,但不是基本动物对象,但实际上是它们的叶子类型?

EG。对于像这样的数据库:

动物表:

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

我想收到一份收藏:

  • Snake(身份证号码:1岁,年龄:2岁,性别:男性,体型:20英尺,鳞片颜色:绿色)
  • Cat(身份证号码:2岁,年龄:3岁,性别:女性,身高:5英尺,毛发颜色:红色)
  • 大象(身份证号码:3岁,年龄:6岁,性别:女性,身高:99英尺,tusks_Size:40英尺。)
  • 猫(身份证:4岁,年龄:2岁,性别:男性,毛色:灰色)

2)如果STI无法实现......是否可以使用类表继承?

1 个答案:

答案 0 :(得分:0)

事实上,我的配置似乎有些错误。重新创建捆绑包并再次编写实体修复了@Bez和@Cerad建议的问题。