我在使用ORM QueryBuilder时遇到了很大的问题。我需要做的是:
我需要获取order
及其products
的数量和大量相关实体(与order
相关联),但我认为它们与此无关。我还需要通过该计数来订购结果。
有谁能举例说明如何实现这一目标?如果可能,我想避免使用“内联”DQL。
答案 0 :(得分:2)
您可以通过Doctrine Query Builder获取数据。
您应该从Order
离开加入产品,然后按订单ID分组。您可以在select语句中使用COUNT(product.id)
并使用order by
子句中的别名来对您的订单进行排序。以下是Repository
的小代码段。
/**
* @return \Doctrine\ORM\Query
*/
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();
}
注意:代码未经过测试。