具有内联接的多选

  • 本文关键字: php symfony doctrine-orm
  • 更新时间 :
  • 英文 :


我尝试用 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( }} 以查看结果的结构。

相关内容

  • 没有找到相关文章

最新更新