我通过createBuilder()
进行查询并在执行时getQuery()->execute()->toArray()
)
我有 10946 元素。我想对它进行分页,所以我把它传递给:
$paginator = new \Phalcon\Paginator\Adapter\QueryBuilder(array(
"builder" => $builder,
"limit" => $limit,
"page" => $current_page
));
$limit
25 且$current_page
1 ,但在执行时:
$paginator->getPaginate();
$page->total_items;
返回 1 。
这是一个错误还是我错过了什么?
UPD:似乎在计算项目时它使用创建的带有限制的sql。没有区别是什么限制,限制除以每页的项目总是等于1.我可能会弄错。
UPD2:同事帮我解决了这个问题,该问题出现在查询phalcon中:count()
group by
计数分组元素。因此,解决方法如下:
$dataCount = $builder->getQuery()->execute()->count();
$page->next = $page->current + 1;
$page->before = $page->current - 1 > 0 ? $page->current - 1 : 1;
$page->total_items = $dataCount;
$page->total_pages = ceil($dataCount / 100);
$page->last = $page->total_pages;
答案 0 :(得分:0)
我知道这不是一个答案,但这很可能是一个错误。 Phalcon的优秀人员承担了一项庞大的工作,这个工作太大而无法在短时间内正常工作,而像PHQL,Volt和其他大型非核心组件这样的东西并没有得到我们所希望的那么多关注。另外,考虑到过去6个月中的大部分时间花费在v2上,有近500个关于这样的东西的错误并且它正在计算中。我在ORM,Volt,Validation和Session中遇到了相当多的问题,这最终使我坚持使用其他不那么酷但经过验证的解决方案。当v2出来时,我确信所有的注意力都集中在bug列表和测试上,直到那时我们才主要依靠自己。鉴于它现在都是C,只有少数发烧友参与进来,而v2这也会改变。
如果这是您遇到的唯一问题,最好的方法是更新您的查询,以便在没有getPaginate()
的情况下自行获取所需信息。