を介してクエリを作成し、createBuilder()
それを実行すると ( getQuery()->execute()->toArray()
) 10946 個の要素が得られました。ページネーションしたいので、次のように渡します。
$paginator = new \Phalcon\Paginator\Adapter\QueryBuilder(array(
"builder" => $builder,
"limit" => $limit,
"page" => $current_page
));
$limit
は25で1$current_page
ですが、実行する場合:
$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;