Symfony 2: INNER JOIN on non related table with doctrine query builder Symfony 2: INNER JOIN on non related table with doctrine query builder mysql mysql

Symfony 2: INNER JOIN on non related table with doctrine query builder


Today I was working on similar task and remembered that I opened this issue. I don't know since which doctrine version it's working but right now you can easily join the child classes in inheritance mapping. So a query like this is working without any problem:

$query = $this->createQueryBuilder('c')        ->select('c')        ->leftJoin('MyBundleName:ChildOne', 'co', 'WITH', 'co.id = c.id')        ->leftJoin('MyBundleName:ChildTwo', 'ct', 'WITH', 'ct.id = c.id')        ->orderBy('c.createdAt', 'DESC')        ->where('co.group = :group OR ct.group = :group')        ->setParameter('group', $group)        ->setMaxResults(20);

I start the query in my parent class which is using inheritance mapping. In my previous post it was a different starting point but the same issue if I remember right.

Because it was a big problem when I started this issue I think it could be also interesting for other people which don't know about it.


Joins between entities without associations were not possible until version 2.4, where you can generate an arbitrary join with the following syntax:

$query = $em->createQuery('SELECT u FROM User u JOIN Blacklist b WITH u.email = b.email');

Reference: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html


$dql = "SELECT     a, md.fisrtName , md.LastName, mj    FROM MembersBundle:Memberdata md        INNER JOIN MembersBundle:Address a WITH md = a.empID        INNER JOIN MembersBundle:Memberjob mj WITH md = mj.memberData            ...    WHERE        a.dateOfChange IS NULL    AND WHERE        md.someField = 'SomeValue'";return $em->createQuery( $dql )->getResult();