我尝试用 Doctrine 翻译这个简单的 SQL 请求,但没有成功:
SELECT `groups`.`departure`, COUNT(`group_users`.`group_id`) as 'teamLength' FROM `groups` INNER JOIN `group_users` WHERE `groups`.`id` = `group_users`.`group_id` AND departure BETWEEN '2017-03-01' AND '2017-03-31'
目前,我的代码如下所示:
public function findDatesBetween(AppBundleEntityItinerary $itinerary, DateTime $firstDate, DateTime $lastDate)
{
$q = $this->createQueryBuilder('g')
->select('g', 'COUNT(gu.group) teamLength')
->innerJoin('AppBundle:GroupUser', 'gu', Join::WITH, 'g.id = gu.group')
->andWhere('g.itinerary = :itineraryId')
->setParameter('itineraryId', $itinerary->getId())
->andWhere('g.departure BETWEEN :firstDate AND :lastDate')
->setParameter('firstDate', $firstDate->format('Y-m-d'))
->setParameter('lastDate', $lastDate->format('Y-m-d'));
return ($q->getQuery()->getResult());
}
如果我像这样更改select()
:->select('g')
,它可以工作。但我需要得到COUNT(gu.group)
.
对于实际代码,当我尝试使用departure
时,我有一个例外:在数组上调用成员函数getDeparture((
我该如何解决?谢谢。
您希望通过查询获取聚合结果,这意味着您的结果将是一个关联数组,而不是实体实例数组。尝试使用 getArrayResult 方法获取数据,并相应地访问数据。
您可以在树枝视图上执行 {{ dump(data( }} 以查看结果的结构。