gpt4 book ai didi

php - 使用 Doctrine 和 ZF2 进行分页

转载 作者:可可西里 更新时间:2023-11-01 12:53:27 35 4
gpt4 key购买 nike

我正在尝试使用 ZF2 和 Doctrine 实现分页。

我在这里尝试做的是从关联表中获取数据,假设为“xyz”。

我的类别表在其自己的 PK 上进行一对多自引用。 我的类别表有以下字段

  • 身份证(主键)
  • 创建时间
  • Category_id(自引用 PK)

我的 XYZ 表可以说它叫做 Name 表有

  • 身份证(PK)
  • Category_id(FK)
  • 姓名
  • 详情

这就是我试图获取数据的方法

      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);
}

在我的 Controller 中这就是我正在做的

      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);
}

现在我没有得到实现分页的结果,有人可以指导我了解我缺少的内容吗?

最佳答案

你在那里使用了错误的分页器。相反,您可以使用 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)));

关于php - 使用 Doctrine 和 ZF2 进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15068503/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com