Tengo un problema con una consulta DQL y especialización de entidad.Doctrine DQL, herencia de tabla de clase y acceso a campos de subclase
Tengo una entidad llamada Auction
, que es OneToOne
relación con Item
. Item
es un mappedSuperclass
para Film
y Book
. Necesito una consulta que respalde un motor de búsqueda, lo que permite al usuario buscar subastas con diferentes propiedades AND
vendiendo artículos con diferentes propiedades (es la parte AND
lo que lo hace difícil).
El problema es que a pesar de que tiene una asociación Auction
señalando Item
como tal, necesita tener acceso a Film
- Book
y campos específicos de. Los usuarios especificarán el tipo Item
que están buscando, pero no veo ninguna forma de usar esta información más que usando INSTANCE OF
en mi consulta DQL.
Hasta ahora, he intentado usar una consulta como:
SELECT a FROM Entities\Auction a
INNER JOIN a.item i
INNER JOIN i.bookTypes b
WHERE i INSTANCE OF Entities\Book
AND b.type = 'Fantasy'
AND ...".
Tal consulta resulta en un error diciendo que:
Clase
Entities\Item
no tiene campo o asociación nombradobookTypes
que es falso para Book
, pero válido para Item
.
también he intentado
SELECT a FROM Entities\Book i
INNER JOIN i.auction a ...
pero calculo Doctrina requiere que me refiero a la misma entidad en SELECT
y FROM
declaraciones.
Si eso es importante, estoy usando la herencia de la tabla de clases. Aún así, no creo que cambiar a la herencia de una sola tabla haría el truco.
¿Alguna idea?
posible duplicado de [Donde-ing en tablas discriminadas] (http://stackoverflow.com/questions/14851602/where-ing-in-discriminated-tables) – Ocramius