Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL / Doctrine:Left Join-Problem

Ihre Bedingungen sollten Teil der LEFT JOIN ... ON-Klausel sein.

$q = $this->createQuery('c')
    ->leftJoin('c.stJob j WITH j.expires_at > ? AND j.is_activated = 1 AND j.is_public = 1', date('Y-m-d h:i:s', time()))
    ->addOrderBy('c.name');

Bedingungen in ON setzen -Klausel (im Gegensatz zu WHERE ) weist darauf hin, dass sie speziell für JOIN gelten . Wenn keine Zeile diese Bedingungen erfüllt, gibt es keinen Join – und genau das wollen Sie in diesem Fall. Setzen Sie sie in das WHERE gibt an, dass das Ergebnis Zeilen müssen diese Bedingungen erfüllen. Und natürlich, wenn es keinen Join gab, können Sie keinen befriedigen Bedingungen über j Tabelle.