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.