Не найти поле в полиморфной ассоциации с Doctrine2 - PullRequest
3 голосов
/ 23 марта 2012

У меня есть полиморфная ассоциация (наследование таблиц классов), и мне нужно использовать DQL для запроса сущностей определенного дочернего класса, которые можно выполнить с помощью «x INSTANCE OF Entity» в предложении WHERE.Теперь мне нужно указать условия, специфичные для этого дочернего класса, но я получаю эту ошибку:

"Класс Person не имеет ассоциации с именем student_field_1"

Person = Родительский класс

Employee =Детский класс

Студент = Детский класс

Есть ли способ, каким образом вы скажете Доктрине, что Человек на самом деле является Студентом, и разрешите мне поместить поля Студента в ГДЕ?

Ответы [ 2 ]

0 голосов
/ 26 марта 2012

Если вы только запрашиваете студентов, то почему бы вам просто не сделать это?

SELECT s FROM Student s WHERE s.student_field_1 = ...
0 голосов
/ 23 марта 2012

Звучит так, будто «Преобразованный суперкласс» будет более подходящим для того, что вы пытаетесь сделать, поскольку для этого не требуется явная связь между родителем / ребенком, это просто простое наследование.

http://docs.doctrine -project.org / projects / doctrine-orm / en / 2.0.x / reference / inheritance-mapping.html # mapped-superclasses

С наследованием таблицы классов вам необходимо предоставить карту дискриминаторасвязывает две сущности посредством ключа.

"Таблица дочернего класса должна быть связана с таблицей родительского класса через ограничение внешнего ключа"

...