noo*_*php 7 php doctrine-orm zend-framework2
我正在尝试使用ZF2和Doctrine实现分页.
我在这里尝试做的是从关联表中获取数据,让我们说'xyz'.
我的类别表在其自己的PK上进行一对多的自引用.我的catgories表有以下的feilds
我的XYZ表让我们说它名为Name表
这就是我想要获取数据的方法
public function allSubcategories($id, $column, $order) {
$repository = $this->entityManager->getRepository('Category\Entity\Category');
$queryBuilder = $repository->createQueryBuilder('category');
$queryBuilder->distinct();
$queryBuilder->select('category');
$queryBuilder->join('Category\Entity\CategoryName', 'category_name', 'WITH', 'category.id = category_name.category');
$queryBuilder->orderBy("category.status");
$q = $queryBuilder->getDql();
return $query = $this->entityManager->createQuery($q);
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,这就是我在做的事情
public function subcategoryAction() {
///////////////////////////InPut Params Given for the pagination
$category_id = (int) $this->params()->fromRoute('id', 0);
$page = (int) $this->params()->fromRoute('page', 0);
$column = $this->params()->fromQuery('column');
$order = $this->params()->fromQuery('order');
$categoryModel = $this->getServiceLocator()->get('Category');
$categoryModel->category = $category_id;
$perPage = 10;
$request = $this->getRequest();
if ($request->isGet()) {
$view = new ViewModel();
$query = $categoryModel->allSubcategories($category_id, $column, $order);
$paginator = new ORMPaginator($query);
$paginator = new \Zend\Paginator\Paginator(new
\Zend\Paginator\Adapter\ArrayAdapter(array($paginator)));
$paginator->setCurrentPageNumber($page);
$paginator->setItemCountPerPage(2);
}
return array('id' => $category_id, 'view' => $paginator);
}
Run Code Online (Sandbox Code Playgroud)
现在我没有得到实施分页的结果可以指导一下我错过的内容吗?
你在那里使用了错误的分页符.相反,你可以使用一个DoctrineORMModule(见DoctrineORMModule\Paginator\Adapter\DoctrinePaginator).
它可能不是很明显,但逻辑与你已写的类似:
use DoctrineORMModule\Paginator\Adapter\DoctrinePaginator as PaginatorAdapter;
use Doctrine\ORM\Tools\Pagination\Paginator as ORMPaginator;
use Zend\Paginator\Paginator as ZendPaginator;
$query = $categoryModel->allSubcategories($category_id, $column, $order);
$paginator = new ZendPaginator(new PaginatorAdapter(new ORMPaginator($query)));
Run Code Online (Sandbox Code Playgroud)