php – Symfony2来自查询的错误响应,包含maxresults和firstresult

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – Symfony2来自查询的错误响应,包含maxresults和firstresult脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到了setMaxResult和setFirstResult的严重问题.

当我试图获得没有setMaxResults和setFirstResult的结果时,它工作正常,返回所有行.

当我使用Offset = 0和limIT = 10时,它运行良好,返回10行.

当我使用offset = 10和limit = 10时,它返回5行(必须是7行)

一个例子,我使用了offset = 0,limit = 20,它返回了15行.但它必须是17行.

使用offset = 0和limit = 30,它返回所有17行….为什么这个查询工作得那么糟糕?对于offset = 0和limit 20,它应该返回所有17行…但不是15 ..

代码

@H_502_23@$eligibleCircles = $this->getAllCircles($user); $results = $this->getEntityManager() ->createQuery( 'SELECT e From testBundle:Event e LEFT JOIN e.eligibleCircles eligibleCircles WHERE ( eligibleCircles in (:eligibleCircles) OR e.owner = :user ) AND e.eventstatus = :eventStatus AND NOT EXISTS ( SELECT eh From TestBundle:EventHidden eh WHERE eh.user = :user AND eh.event = e ) AND e.startDate < :currentDate ORDER BY e.startDate DESC ' ) ->setParameter('eventStatus',3) ->setParameter('eligibleCircles',$eligibleCircles ) ->setParameter('user',$user ) ->setParameter('currentDate',new \DateTime('Now') ) ->setFirstResult($offset) ->setMaxResults($limitNr) ->getResult();

解决方法

对于在查询中加入连接时sql-limit无效,Cerad是正确的.

如果您想在使用Doctrine2时进行分页,可以使用一些有用的工具.

看看这里的文档:
http://doctrine-orm.readthedocs.org/en/latest/tutorials/pagination.html

您需要一些额外的代码,但大多数复杂的东西都是为您处理的.它还需要1或2个额外查询才能找到正确的记录数据.在您的情况下,这可能是也可能不是问题.

脚本宝典总结

以上是脚本宝典为你收集整理的php – Symfony2来自查询的错误响应,包含maxresults和firstresult全部内容,希望文章能够帮你解决php – Symfony2来自查询的错误响应,包含maxresults和firstresult所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。