Điều kiện của bạn phải là một phần của điều khoản 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');
Đặt các điều kiện trong ON
mệnh đề (trái ngược với WHERE
) chỉ ra rằng chúng áp dụng cụ thể cho JOIN
. Nếu không có hàng nào đáp ứng các điều kiện đó, thì không có liên kết nào - và đó chỉ là những gì bạn muốn trong trường hợp này. Đưa chúng vào WHERE
cho biết rằng kết quả các hàng phải thỏa mãn các điều kiện đó. Và rõ ràng nếu không có tham gia, bạn không thể đáp ứng bất kỳ điều kiện về j
bảng.