Dine betingelser bør være en del af LEFT JOIN ... ON-klausulen.
$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');
Sætter betingelser i ON
klausul (i modsætning til WHERE
) angiver, at de gælder specifikt for JOIN
. Hvis ingen rækker opfylder disse betingelser, er der ingen join - og det er lige hvad du ønsker i dette tilfælde. Sætter dem i WHERE
angiver, at resultatet rækker skal opfylde disse betingelser. Og selvfølgelig kan du ikke tilfredsstille nogen, hvis der ikke var nogen joinforbindelse betingelser om j
tabel.