Vaše podmínky by měly být součástí klauzule LEFT JOIN ... ON.
$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');
Zadání podmínek do ON
klauzule (na rozdíl od WHERE
) označuje, že se vztahují konkrétně na JOIN
. Pokud tyto podmínky nesplňují žádné řádky, neexistuje žádné spojení – a to je přesně to, co v tomto případě chcete. Umístěte je do WHERE
označuje, že výsledek řádky musí splňovat tyto podmínky. A je zřejmé, že pokud nebylo připojení, nemůžete uspokojit žádné podmínky o j
tabulka.