Doctrine2: Arbitrary join and single table inheritance
doctrine, doctrine-orm, php
Solution
This bug is fixed in Doctrine 2.4
https://github.com/doctrine/doctrine2/issues/2934
Problem
Note: This is an ORM limitation reported on the project's issue tracker I'm facing an issue building a DQL query using the arbitrary join syntax introduced in Doctrine 2.3 on an entity class which is the root of a hierarchy. Given these classes: A - no inheritance B1 - abstract, root of a hierarchy, discriminator column is named 'type' I setup a query builder like 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'); ``` And the SQL Doctrine generates is something like this: ``` SELECT a.id, b.id FROM a LEFT JOIN b ON (a.something=b.something) WHERE b.type IN ('1', '2', '3') ``` The problems is that the where makes the left join useless. Is there a way to force the condition on the discriminator column to be placed in the join? At least that would make it... Should I fill a bug report?