Я пытаюсь реализовать разбиение на страницы с помощью ZF2 и Doctrine.
То, что я пытаюсь сделать здесь, – извлечь данные из связанной таблицы, можно сказать «xyz».
Где, как таблица моих категорий, делает один-много самостоятельных ссылок на своей собственной ПК. Таблицы MY catgories имеют следующие feilds
Моя таблица XYZ позволяет сказать, что она называется таблицей имен.
Это то, что я пытаюсь сделать, чтобы получить данные
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); }
И в моем контроллере это то, что я делаю
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); }
Теперь я не получаю результатов с реализацией разбивки на страницы, может ли кто-нибудь 1 узнать меня о том, чего я не вижу?
Вы используете неверный указатель. Вместо этого вы можете использовать метод 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)));