【问题标题】: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

有什么建议吗?

【问题讨论】:

    标签: php doctrine-orm orm


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-10
      • 2017-09-13
      • 2017-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      相关资源
      最近更新 更多