我正在使用KNP Paginator捆绑包,一切正常,直到我尝试使用一对多关系关联对字段进行排序。我在purchaseOrder表中有一个名为“supplier_id”的文件,我正在尝试对此进行排序,但我不断收到“没有这样的字段...”错误。 “supplier_id”字段仅包含“供应商”表中的ID号。
这是我的代码。
// Set the up the pagination statement...
$em = $this->getDoctrine()->getManager();
$dql = "SELECT p FROM WIC\PurchaseOrderBundle\Entity\PurchaseOrder p WHERE p.account=:account_id ORDER BY p.id desc";
$query = $em->createQuery($dql);
$query->setParameters(array(
'account_id' => $account->getId(),
));;
$paginator = $this->get('knp_paginator');
$paginatorObject = $paginator->paginate(
$query,
$this->get('request')->query->get('page', 1),25
);
所以基本上在第一次加载页面时,它会抓取所有采购订单。
然后我将其设置为能够按供应商排序:
<th>{{ knp_pagination_sortable(purchaseOrders, 'Supplier', 'p.supplier') }}</th>
当我点击它进行排序时,它给了我这个错误:
There is no such field [supplier_id] in the given Query component, aliased by [p]
我的问题是,当我排序的字段是一对多关系的一部分时,我如何排序。 ID存储在名为“supplier_id”的字段中,但它是OtoM关系。
谢谢!
答案 0 :(得分:0)
你基本上需要一个普通的查询来获取你想要的所有对象的id。使用这些ID然后构建一个新查询,您只需查找那些ID并对该查询进行分页。
答案 1 :(得分:0)
您可以尝试使用使用QueryBuilder Doctrine创建的DQL的paginator。