Нужно установить максимальное количество результатов в KnP Paginator?

Как следует из названия, я пытаюсь ввести ограничение на количество результатов, доступных для разбиения на страницы с помощью KnP Paginator. Я предполагаю, что установка ограничения на мой запрос ничего не дает, потому что разбивка на страницы устанавливает свой собственный лимит на запрос, чтобы показать правильное количество строк на странице.

Мой вариант использования довольно прост: пользователь применяет несколько фильтров в пользовательском интерфейсе (поле должно быть равно X, упорядочивать по и т. д.), а код переводит их во входные данные для построителя запросов. Ограничение состоит в том, чтобы позволить пользователю сказать «покажите мне 100 лучших записей, где [вставить условие] верно, упорядоченных по [полю]». В настоящее время это невозможно с KnP Paginator, если только я что-то не упустил в документации.


person TheGremlyn    schedule 04.11.2016    source источник
comment
Вы обнаружили третий параметр paginate метода сервиса knp_paginator?   -  person malcolm    schedule 04.11.2016
comment
Скорее всего, это уже используется. То, что я ищу, - это способ ограничить больший набор данных, а затем разбить его на страницы. Другими словами, это способ сообщить пагинатору, что я хочу показать только 500 результатов, но при этом дать мне 20 на странице до 500. Насколько я могу судить, в настоящее время это невозможно, поэтому я реализовал обходной путь пользовательского интерфейса, чтобы прекратить отображение результатов. после того, как я достигну желаемого предела.   -  person TheGremlyn    schedule 04.11.2016
comment
Используйте пользовательский запрос count: github.com/KnpLabs/KnpPaginatorBundle/blob /мастер/Ресурсы/doc/   -  person malcolm    schedule 05.11.2016


Ответы (1)


Используйте пользовательский count запрос:

<?php
$count = 500;

$query = $entityManager
    ->createQuery('SELECT a FROM AcmeMainBundle:Article a')
    ->setHint('knp_paginator.count', $count)
;
$pagination = $paginator->paginate($query, $page, 10);
person malcolm    schedule 05.11.2016
comment
Так что это, кажется, почти работает. Добавление подсказки подсчета, как вы описываете, ограничивает общее количество доступных страниц, но, например, я установил его на 25 с 20 на страницу и ожидал увидеть 5 результатов на странице = 2, однако я получил все 20 результатов на этой второй странице. Любая идея, почему это может быть? - person TheGremlyn; 10.11.2016