我是一个symfony初学者,我想用框架创建一个博客。我使用存储库来获取这种方法的家庭文章:
public function getHomeArticles($offset = null, $limit = null)
{
$qb = $this->createQueryBuilder('a')
->leftJoin('a.comments', 'c')
->addSelect('c')
->addOrderBy('a.created', 'DESC');
if (false === is_null($offset))
$qb->setFirstResult($offset);
if (false === is_null($limit))
$qb->setMaxResults($limit);
return $qb->getQuery()
->getResult();
}
所以在我的数据库中我有10篇文章。在我的BlogController中,我使用:
$blog = $em->getRepository('TestBlogBundle:Article')
->getHomeArticles(3,4);
有了这个我想要4篇文章。但作为回报,我也有一篇文章。
有什么问题?
答案 0 :(得分:28)
这是一个know issue,如果您的查询包含一个fetch-joined集合,则需要谨慎使用setFirstResult()
和setMaxResults()
。
如前所述First and Max Result Items:
如果您的查询包含指定结果的fetch-joined集合 限制方法无法正常工作。设置最大结果 限制数据库结果行的数量,但是在这种情况下 fetch-joined集合一个根实体可能出现在很多行中, 有效保湿少于指定数量的结果。
相反,你可以:
延迟加载
使用the Paginator(正如@Marco在此处所述)