Uw voorwaarden moeten deel uitmaken van de LEFT JOIN ... ON-clausule.
$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');
Voorwaarden in de ON
zetten clausule (in tegenstelling tot de WHERE
) geeft aan dat ze specifiek van toepassing zijn op de JOIN
. Als er geen rijen aan die voorwaarden voldoen, is er geen join - en dat is precies wat je in dit geval wilt. Ze in de WHERE
. plaatsen geeft aan dat het resultaat rijen moeten aan die voorwaarden voldoen. En natuurlijk, als er geen deelname was, kun je iedere . niet bevredigen voorwaarden over de j
tafel.