4

を介してクエリを作成し、createBuilder()それを実行すると ( getQuery()->execute()->toArray()) 10946 個の要素が得られました。ページネーションしたいので、次のように渡します。

$paginator = new \Phalcon\Paginator\Adapter\QueryBuilder(array(
    "builder" => $builder,
    "limit" => $limit,
    "page" => $current_page
));

$limit251$current_pageですが、実行する場合:

$paginator->getPaginate();

$page->total_items;

1を返します。

それはバグですか、それとも何か不足していますか?

UPD:アイテムをカウントするときに、作成されたSQLを制限付きで使用しているようです。制限が何であるかに違いはありません。制限をページあたりのアイテムで割った値は常に 1 です。間違っているかもしれません。

UPD2: 同僚がこれを理解するのを手伝ってくれました。バグは、phalcon が生成するクエリの中にありました: count()of the group bycounts 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;
4

1 に答える 1

0

これはあまり答えではないことはわかっていますが、これはバグである可能性が最も高いです。Phalcon の優秀な人たちは、わずかな空き時間で適切に行うには大きすぎる大規模な仕事を引き受けました。PHQL、Volt、その他の重要ではあるがコアではないコンポーネントは、私たちが望むほど注目されていません。また、過去 6 か月のほとんどの時間が v2 に費やされたことを考えると、そのようなものに関する 500 近くのバグがあり、その数は増え続けています。ORM、Volt、Validation、および Session でかなりの問題に遭遇したため、最終的には、それほどクールではなく、より実績のあるソリューションに固執するようになりました。v2 がリリースされたら、バグ リストとテストにすべての注意が向けられると確信しています。現在はすべて C であるため、関与する熱狂的なユーザーはごくわずかですが、v2 ではこれも変更されます。

これがあなたが直面している唯一の問題である場合、最良のアプローチは、クエリを更新して、必要な情報を取得することですgetPaginate().

于 2014-09-02T19:21:06.323 に答える