Details
Description
Query builder creates bad DQL if multiple FROM and JOIN parts are used.
As example such query builder code
$qb->from('A', 'a')
->from('B', 'b')
->join('b.c', 'c')
->join('c.d', 'd');
will generate DQL
...
FROM A a
INNER JOIN c.d d,
B b
INNER JOIN b.c c
...
but should generate this instead
...
FROM A a,
B b
INNER JOIN b.c c
INNER JOIN c.d d
...
The DQL parser raises exception
Doctrine\ORM\Query\QueryException: [Semantical Error] line 0, col 61 near '.d d, B': Error: Identification Variable c used in join path expression but was not defined before.
The test case attached.
The problem is that for the relation c.d the query builder uses the first root entity as the master which makes it to be included before the join b.c.