我在使用ORM QueryBuilder时遇到了很大的问题。我需要做的是: 我需要获取order
及其products
计数和大量关联实体(与order
相关联),但我认为它们在这里无关紧要。我还需要按该计数对结果进行排序。
谁能给我举个例子来说明如何做到这一点?如果可能的话,我想避免"内联"DQL。
您可以通过 Doctrine Query Builder 获取数据。
您应该离开加入Order
的产品,然后按订单 ID 分组。您可以在 select 语句中使用COUNT(product.id)
,并使用别名 inorder by
子句对订单进行排序。下面是来自Repository
的小代码片段。
/**
* @return DoctrineORMQuery
*/
public function getHotelAndRoomType()
{
$qb = $this->createQueryBuilder('order')
->select('partial order.{id, orderId} as order, count(product.id) as total_products_in_order')
->leftJoin('AppBundle:Product', 'product', 'WITH', 'product.order = order.id')
->groupBy('order.id')
->orderBy('total_products_in_order', 'DESC')
;
return $qb->getQuery()->execute();
}
注意:代码未测试。