Zf2 Pagination выбирает все записи

Я реализовал zf2 paginator. Но теперь, когда данные увеличились, я понял, что сначала выбираются все записи, а затем происходит разбиение на страницы, что занимает больше времени. Я не осознавал проблему скорости, пока записи не превысили 1к.

Работает ли 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);

0

Решение

Как упоминалось в комментариях @foozy, Doctrine предоставляет для этой цели адаптеры для ZF2. Ты можешь использовать Выбираемый адаптер из DoctrineModule прямо или DoctrinePaginator класс от DoctrineORMModule. Последний не имеет собственной документации, но это сообщение в блоге от Loft Digital объясняет это хорошо:

use DoctrineORMModule\Paginator\Adapter\DoctrinePaginator as DoctrineAdapter;
use Doctrine\ORM\Tools\Pagination\Paginator as ORMPaginator;
use Zend\Paginator\Paginator;

// .......

$entityManager = $this->getServiceLocator()->get('doctrine.entitymanager.orm_default');
$repository = $entityManager->getRepository('Admin\Entity\SystemUser');
$adapter = new DoctrineAdapter(new ORMPaginator($repository->createQueryBuilder('user')));
$paginator = new Paginator($adapter);

// .......
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]