【发布时间】:2014-10-19 13:39:04
【问题描述】:
我通过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() of the group by counts grouped elements。所以解决方法如下:
$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;
【问题讨论】:
-
有机会分享其余代码吗?由此很难猜测。也许展示你如何构建查询?正在加入/分组吗?
-
$page->items呢?它只有一项吗? -
它有
25,根据限制是正确的。
标签: phalcon query-builder paginator