Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL / Doctrine :Problème de jointure à gauche

Vos conditions doivent faire partie de la clause 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');

Mettre des conditions dans le ON clause (par opposition à la clause WHERE ) indique qu'ils s'appliquent spécifiquement au JOIN . Si aucune ligne ne satisfait ces conditions, il n'y a pas de jointure — et c'est exactement ce que vous voulez dans ce cas. Les mettre dans le WHERE indique que le résultat les lignes doivent remplir ces conditions. Et évidemment s'il n'y avait pas de jointure, vous ne pouvez satisfaire aucune conditions sur le j tableau.