我无法将教义对象传递给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 = new ORMPaginator('pass me DQL'); 需要 Query 来生成分页器。现在如何将教义对象(非 DQL 对象)传递给 ORMPaginator,我无法通过这个?
要实现这一点,您需要同时使用 ORM 分页器和 Zend 分页器
use DoctrineORMModule'Paginator'Adapter'DoctrinePaginator as PageAdapter;
use Doctrine'ORM'Tools'Pagination'Paginator as ORMPaginator;
use Zend'Paginator'Paginator as ZendPaginator;
您应该首先初始化查询生成器 例如,如果类别是您的实体您可以按以下步骤进行操作
$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)));
我记得我从一些SO帖子中学到了这种技术,但是在发布此解决方案时找不到它