Я не могу найти Doctrine_Pager в Doctrine2 и действительно нужен способ опубликовать результаты моих запросов. Есть ли способ использовать альтернативный пейджер (Pear, Zend)? Пожалуйста, отправьте примерный код, если решение доступно. Google помог мне техник его подводит, поэтому надеюсь, люди будут :)Как сделать вывод Doctrine2
ответ
Я написал это расширение для Doctrine2, который содержит мощный пейджер:
Просто как примечание, хотя, Запрос # setMaxResults/Запрос охватывает # setFirstResult большинство основных потребностей в пейджинге.
Существует хорошее третье одно решение: https://github.com/whiteoctober/Pagerfanta
Я нашел, что это очень полезно
PagerFanta, как было упомянуто Maksim, приходит рекомендуется. Тем не менее, существует также еще один набор связок для страниц, который следует, по крайней мере, упомянуть: http://symfony2bundles.org/knplabs/KnpPaginatorBundle
В отличие от PagerFanta, KnpPaginatorBundle в настоящее время требует пакет paginator zend в качестве зависимости.
В Доктрине 2.2, есть Paginator вспомогательный класс: http://docs.doctrine-project.org/en/latest/tutorials/pagination.html
Очень прост в использовании :)
use Doctrine\ORM\Tools\Pagination\Paginator;
$dql = "SELECT p, c FROM BlogPost p JOIN p.comments c";
//build the query for the page you want to display
$query = $entityManager->createQuery($dql)
->setFirstResult(0)
->setMaxResults(10);
$paginator = new Paginator($query, $fetchJoinCollection = true);
$c = count($paginator); //automatically makes another query and returns the total number of elements.
//iterating over the paginator iterates over the current page
foreach ($paginator as $post) {
echo $post->getHeadline() . "\n";
}
Код выглядит очень красиво, не могу ждать, чтобы попробовать его, благодаря – pentarim
@timdev, мог бы дать образец кода, как мы используем Zend_Paginator и DoctrineExtensions \ Paginate \ PaginationAdapter или DoctrineExtensions \ Paginate \ Paginate ??? – ulduz114