Doctrine和Zend Framework 2分页中的条件

时间:2014-09-21 19:45:21

标签: php zend-framework doctrine-orm pagination zend-framework2

我无法使用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条件?

1 个答案:

答案 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;
}