我无法使用Doctrine和Zend框架2分页的条件。 我的代码如下。
public function indexAction(){
$em = $this->getEntityManager();
$repository = $em->getRepository('Catalog\Entity\Category');
$queryBuilder = $repository->createQueryBuilder('Category');
$adapter = new DoctrinePaginator(new ORMPaginator($queryBuilder));
$paginator = new Paginator($adapter);
$paginator->setDefaultItemCountPerPage(9);
$page = (int)$this->params()->fromQuery('page');
if($page) $paginator->setCurrentPageNumber($page);
$view = new ViewModel(
array('paginator' => $paginator)
);
return $view;
}
我想获取“已启用”列值为1的类别。
我得到的替代方法是创建DQL查询,但我没有得到zend framework 2分页的好处。
$repository->createQueryBuilder('Category')->where(array('enabled' => 1));
我想使用我的顶级代码方式,因为它有助于我充分利用zend framework 2分页但是如何在其中指定where条件?
答案 0 :(得分:1)
我使用Doctrine的QueryBuilder解决了这个问题。找到下面的代码,添加条件以及Zend Framework 2分页。
public function indexAction(){
$em = $this->getEntityManager();
$repository = $em->getRepository('Catalog\Entity\Category');
$queryBuilder = $repository->createQueryBuilder('category')
->where('category.enabled = 1')
->orderBy('category.sortOrder', 'ASC');
$adapter = new DoctrinePaginator(new ORMPaginator($queryBuilder));
$paginator = new Paginator($adapter);
$paginator->setDefaultItemCountPerPage(9);
$page = (int)$this->params()->fromQuery('page');
if($page) $paginator->setCurrentPageNumber($page);
$view = new ViewModel(
array('paginator' => $paginator)
);
return $view;
}