sql >> Base de Datos >  >> RDS >> Mysql

SQL / Doctrine:Problema de combinación izquierda

Sus condiciones deben ser parte de la cláusula 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');

Poner condiciones en el ON cláusula (a diferencia de WHERE ) indica que se aplican específicamente a JOIN . Si ninguna fila cumple con esas condiciones, no hay unión, y eso es justo lo que desea en este caso. Poniéndolos en el WHERE indica que el resultado las filas deben cumplir esas condiciones. Y, obviamente, si no hubo unión, no puede satisfacer ninguna condiciones sobre el j mesa.