2016-11-04 2 views
0

タイトルのように、私は、KnP Paginatorによってページ設定できる結果に制限を設けようとしています。私のクエリの制限を設定することは何もしません。ページごとに適切な行数を表示するために、ページング担当者がクエリに独自の制限を設定しているためです。KnP Paginatorの最大結果制限を設定する必要がありますか?

私のユースケースはかなり単純です。ユーザーはUIにいくつかのフィルタを適用します(フィールドはX、order byなどでなければなりません)。コードはそれらを入力に変換してクエリビルダーに送ります。この制限は、[insert condition]が真で、[field]で指定された上位100個のエントリを表示することをユーザーに許可することです。私がドキュメントに何かを見つけていない限り、現在はKnP Paginatorで可能ではないようです。

+0

あなたは 'knp_paginator'サービスの' paginate'方法の第3のパラメータを発見しましたか? – malcolm

+0

既に使用中です。私が探しているのは、大きなデータセットを制限し、それを改ページする方法です。言い換えれば、ページャーに私は500の結果を表示したいだけですが、1ページあたり20を500まで与えてください。 これは現時点では不可能なことから、UI回避策を実装しました希望の限界に達した後に結果を示します。 – TheGremlyn

+0

カスタム 'count'クエリを使用してください:https://github.com/KnpLabs/KnpPaginatorBundle/blob/master/Resources/doc/manual_counting.md – malcolm

答えて

0

使用カスタムcountクエリ:

<?php 
$count = 500; 

$query = $entityManager 
    ->createQuery('SELECT a FROM AcmeMainBundle:Article a') 
    ->setHint('knp_paginator.count', $count) 
; 
$pagination = $paginator->paginate($query, $page, 10); 
+0

これはほとんど動作するようです。カウントヒントを追加すると、使用可能なページ数が制限されますが、たとえば、ページあたり20で25に設定され、ページ= 2で5件の結果が表示されると予想されますが、その2ページで20件の結果がすべて得られます。それがなぜ起こっているのでしょうか? – TheGremlyn

関連する問題