【发布时间】:2018-02-05 10:38:04
【问题描述】:
我有一个简单的查询:
$query = $qb->select('c, s')
->from('AppBundle:City', 'c')
->leftJoin('c.streets', 's')
->where('o.name = :name')
->setParameter('name', 'London')
->andWhere('s.numbers > :number')
->setParameter('number', 10000);
$result = $query->getQuery()->getOneOrNullResult();
我想通过关系获得城市和街道。如果城市和街道的数字 > 10000 存在,则此查询运行良好,但如果城市存在且没有数字 > 10000,则此查询返回 null。为什么,如果我使用 leftJoin,而不是 join?
即使城市没有街道,我如何获得城市?
【问题讨论】:
-
外连接的内表上的条件必须与 ON 进行 AND 运算,否则会将连接变为内连接。
-
@dnoeth 那我该怎么做呢?
-
我不知道如何在 symfony 中做到这一点,我用 SQL 编写查询:-)
-
您可以尝试从选择中删除
s吗? -
如果我从选择中删除 s,那么 andWhere 不起作用。
标签: php mysql sql symfony symfony-3.3