Я реализовал страницу zf2 paginator. Но теперь, когда данные увеличились, я понял, что сначала извлекает все записи, а затем разбивается на страницы, что занимает больше времени. Я не осознавал проблему скорости, пока записи не переместились более чем на 1к.Zf2 Pagination выбирает все записи
Действительно ли paginator работает так, или мне что-то не хватает в моем коде?
$photos = $em->getRepository('User\Entity\MyEntity')->findBy(array('id' => $main_id, 'status' => '1', 'is_primary' => '1'));
/** Create Paginator * */
$paginator = new \Zend\Paginator\Paginator(new
\Zend\Paginator\Adapter\ArrayAdapter($photos)
);
if (isset($data['pg_id'])) {
$paginator->setCurrentPageNumber($data['pg_id']);
} else {
$paginator->setCurrentPageNumber(1);
}
$paginator->setDefaultItemCountPerPage(25);
Я не слишком хорошо знакомы с доктриной (или любой другой ORM, который вы используете), но не первая линия принести много данных? Я фактически обнаружил, что использую адаптер ['NullFill'] (http://framework.zend.com/manual/current/en/modules/zend.paginator.usage.html) (я думаю, что он был вызван просто« null » адаптер перед). Ему не нужны фактические данные, только общее количество элементов (и запрос количества в индексированном поле быстрее, чем выборка всех данных). – guessimtoolate
Вы пытались использовать [адаптер уклонения для доктрины] (https://github.com/doctrine/DoctrineModule/blob/master/docs/paginator.md) вместо ArrayAdapter? – edigu