gpt4 book ai didi

symfony - 学说查询构建器限制和偏移

转载 作者:行者123 更新时间:2023-12-03 13:25:51 25 4
gpt4 key购买 nike

我是一个 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 篇文章。但作为返回,我也有一篇文章。

问题是什么?

最佳答案

这是一个 know issue哪里setFirstResult()setMaxResults()如果您的查询包含 fetch-joined 集合,则需要小心使用。

如关于 First and Max Result Items 所述:

If your query contains a fetch-joined collection specifying the result limit methods are not working as you would expect. Set Max Results restricts the number of database result rows, however in the case of fetch-joined collections one root entity might appear in many rows, effectively hydrating less than the specified number of results.



相反,您可以:
  • 懒加载
  • 使用 the Paginator (如@Marco 此处所述)
  • 使用 Doctrine\Common\Collections\Collection::slice()
  • 关于symfony - 学说查询构建器限制和偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14884183/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com