我有一个多态关联(类表继承),我需要使用DQL来查询特定子类的实体,这可以使用WHERE子句中的"x INSTANCE of Entity"来完成。现在我需要为该子类设置特定的条件,但我得到了这个错误:
"Class Person没有名为student_field_1的关联"
人员=父类
员工=子级
Student=儿童班
你有没有办法告诉Doctrine这个人实际上是一个学生,并允许我把学生字段放在哪里?
听起来"映射超类"更适合您的尝试,因为它不需要父/子之间的显式链接,它只是简单的继承。
http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/inheritance-mapping.html#mapped-超类
通过类表继承,您需要提供通过键链接两个实体的鉴别器映射。
"子类的表应该通过外键约束链接到父类的表"
如果你只是在查询学生,为什么不直接这样做呢?
SELECT s FROM Student s WHERE s.student_field_1 = ...