Ast*_*m56 18 orm symfony doctrine-orm
我是一个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();
}
Run Code Online (Sandbox Code Playgroud)
所以在我的数据库中我有10篇文章.在我的BlogController中,我使用:
$blog = $em->getRepository('TestBlogBundle:Article')
->getHomeArticles(3,4);
Run Code Online (Sandbox Code Playgroud)
有了这个,我想要4篇文章.但作为回报,我也有一篇文章.
问题是什么?
Mic*_*ick 30
这是一个已知问题,其中setFirstResult()和setMaxResults()必须小心使用,如果你的查询中包含一个获取-加入收藏.
正如关于第一和最大结果项目所述:
如果您的查询包含一个fetch-joined集合,指定结果限制方法无法正常工作.设置最大结果限制数据库结果行的数量,但是对于fetch-joined集合,一个根实体可能出现在许多行中,有效地保湿少于指定数量的结果.
相反,你可以:
懒加载
使用Paginator(如@Marco在此处所述)
| 归档时间: |
|
| 查看次数: |
46726 次 |
| 最近记录: |