Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL / Doctrine:problema de junção à esquerda


Suas condições devem fazer parte da 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');

Colocando condições no ON cláusula (ao contrário da cláusula WHERE ) indica que eles se aplicam especificamente ao JOIN . Se nenhuma linha atender a essas condições, não haverá junção — e é exatamente isso que você deseja neste caso. Colocando-os no WHERE indica que o resultado as linhas devem satisfazer essas condições. E, obviamente, se não houve junção, você não pode satisfazer nenhuma condições sobre o j tabela.