教义 - 按计数分组
Posted
技术标签:
【中文标题】教义 - 按计数分组【英文标题】:Doctrine - group by on count 【发布时间】:2018-12-17 11:57:22 【问题描述】:这是我的代码:
$qb = $this->_em
->createQueryBuilder();
$query = $qb->select('COUNT(food) as cnt')
->from(Food::class, 'food')
->groupBy('cnt')
->getQuery()->getSQL();
但是我的期望类似于以下查询:
SELECT COUNT(f0_.food_id) AS sclr_0 FROM foods f0_ WHERE (f0_.deleted_at IS NULL) GROUP BY sclr_0
结果如下:
SELECT COUNT(f0_.food_id) AS sclr_0 FROM foods f0_ WHERE (f0_.deleted_at IS NULL) GROUP BY f0_.food_id
有什么建议吗?
【问题讨论】:
【参考方案1】:您需要将您的查询用作子查询,我可以在原始 SQL 中执行此操作,但您可以从以下方面获得想法:
$qb = $this->_em
->createQueryBuilder();
$query = $qb->select('COUNT(food) as cnt')
->from(Food::class, 'food')
->groupBy('cnt')
->getQuery()->getSQL();
$qb2 = $this->_em
->createQueryBuilder();
$query2 = $qb->select('sclr_0')
->from('('.$query.')', 'cnt')
->groupBy('sclr_0 ')
->getQuery()->getSQL();
【讨论】:
以上是关于教义 - 按计数分组的主要内容,如果未能解决你的问题,请参考以下文章