Mysql
 sql >> Database >  >> RDS >> Mysql

SQL/Dottrine:problema di unione a sinistra

Le tue condizioni dovrebbero far parte della clausola 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');

Mettere le condizioni in ON clausola (al contrario di WHERE ) indica che si applicano specificamente al JOIN . Se nessuna riga soddisfa queste condizioni, non c'è alcun join, ed è proprio quello che vuoi in questo caso. Mettendoli nel WHERE indica che il risultato le righe devono soddisfare tali condizioni. E ovviamente se non c'è stato un join, non puoi soddisfare nessuno condizioni relative a j tabella.