symfony2 / doctrine2 - dql语句onetoMany

时间:2012-03-18 15:37:00

标签: symfony doctrine-orm

我有一个实体驱动程序和一个实体汽车。一个司机有很多车。 我有以下dql查询:

$query = $this->getEntityManager()->createQuery('select d, c FROM driver d JOIN d.cars c WHERE c.color=:color');                
$query->setParameter('color', $color);
$query->setFirstResult((int)$offset ? $offset*15 : 0 );
$query->setMaxResults(15);   

结果列表有5行。但是当我在控制台中执行创建的SQL查询时,我有15行。 当我将连接类型更改为左连接时,行数不是由驱动程序计算的。但是我使用寻呼机来阅读有红色汽车的司机。

有人知道我做错了什么吗? 非常感谢你。

1 个答案:

答案 0 :(得分:3)

当您使用Doctrine进行获取连接查询时,每个实体都会返回多行。如果对这些查询使用setMaxResults,则会丢弃某些实体。

阅读本文:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#first-and-max-result-items-dql-query-only

解决方案在这里:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/pagination.html