Doctrine2 QueryBuilder选择关联实体的实体和计数

时间:2016-12-21 19:33:42

标签: symfony doctrine-orm query-builder

我在使用ORM QueryBuilder时遇到了很大的问题。我需要做的是: 我需要获取order及其products的数量和大量相关实体(与order相关联),但我认为它们与此无关。我还需要通过该计数来订购结果。

有谁能举例说明如何实现这一目标?如果可能,我想避免使用“内联”DQL。

1 个答案:

答案 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();
}

注意:代码未经过测试。