Nota: Questa è una limitazione ORM reported on the project's issue trackerDoctrine2: Arbitrary aderire e singola ereditarietà delle tabelle
Sto affrontando un problema la costruzione di un DQL query utilizzando la sintassi join arbitraria introdotto nel Dottrina 2.3 su una classe di entità che è la radice di una gerarchia.
Attribuite queste classi:
A - nessuna eredità
B1 - astratti, radice di una gerarchia, colonna discriminatore si chiama 'tipo'
installo un generatore di query come this:
$qb->select('a.id AS idA, b.id AS idB')
->from('\Entity\A', 'a')
->leftJoin('\Entity\B1', 'b', \Doctrine\ORM\Query\Expr\Join::WITH, 'a.something=b.something');
E la Doctrine SQL genera è qualcosa di simile:
SELECT a.id, b.id FROM a LEFT JOIN b ON (a.something=b.something) WHERE b.type IN ('1', '2', '3')
I problemi è che la dove fa la LEFT JOIN inutile.
C'è un modo per forzare la condizione sulla colonna discriminatore da inserire nel join? Almeno questo lo renderebbe ...
Devo riempire un bug report?
Beh, io voglio per recuperare tutti gli elementi A, anche quelle che non hanno alcun B così un interno unirsi non aiuterebbe. In realtà, il comportamento corrente è lo stesso di quando ho usato un inner join a causa della condizione where sulla colonna b.type. – Jay