我无法将Doctrine对象传递给ORMPaginator函数这里是我代码的代码段
Doctrine\ORM\Tools\Pagination\Paginator as ORMPaginator;..............
if (count($SearchResults) > 0)
{
$ORMPaginator = new ORMPaginator($SearchResults);
}
else
{
$ORMPaginator = new ORMPaginator($VouchersRepo->createQueryBuilder('vouchers'));
}
$Adapter = new DoctrineAdapter($ORMPaginator);
$Paginator = new Paginator($Adapter);
$Paginator->setDefaultItemCountPerPage(5);
$page = (int) $this->params()->fromQuery('page', 1);
$Paginator->setCurrentPageNumber($page);
显然$ ORMPaginator =新的ORMPaginator('传递给我DQL');需要Query来生成Paginator。现在如何将Doctrine对象(非DQL对象)传递给ORMPaginator我无法通过它?
答案 0 :(得分:1)
要实现这一点,您需要使用ORM paginator和Zend paginator
use DoctrineORMModule\Paginator\Adapter\DoctrinePaginator as PageAdapter;
use Doctrine\ORM\Tools\Pagination\Paginator as ORMPaginator;
use Zend\Paginator\Paginator as ZendPaginator;
首先应初始化查询构建器例如,如果category是您的实体 你可以按照以下方式做到这一点
$repository = $this->entityManager->getRepository('put your entity class here');
$queryBuilder = $repository->createQueryBuilder('what ever entity you want');
$queryBuilder->select('what ever your want');
$q = $queryBuilder->getDql();
$query = $this->entityManager->createQuery($q);
$paginator = new ZendPaginator(new PageAdapter(new ORMPaginator($query)));
我记得我从Some SO帖子中学到了这种技术,但在发布此解决方案时我找不到它