我有一个简单的查询:
$this->qb->select('l.value')
->addSelect('count(l) AS cnt')
->addSelect('hour(l.time) AS date_hour')
->from(Logs::class, 'l')
->where('l.header = :header')
->groupBy('l.value')
->addGroupBy('date_hour')
->setParameter('header', 'someheader')
此代码选择 3 列有一个条件和两个 groupBy。
我想获取此查询的记录数。当然我不想下载所有记录并检查下载数据的大小。
问题: 如何重建此查询并从数据库中获取结果作为 singleScalarValue()?
最佳答案
我认为你应该在这里使用(id column for count):
->addSelect('count(l) AS cnt')
类似这样,但如果您展示您的实体,我可以建议正确的解决方案:
$this->qb->select('l')
->addSelect('count(l.id) AS cnt')
->addSelect('hour(l.time) AS date_hour')
->from(Logs::class, 'l')
->where('l.header = :header')
->groupBy('l.value')
->addGroupBy('date_hour')
->setParameter('header', 'someheader')
$count = $qb->getQuery()->getSingleScalarResult();
关于php - doctrine 中的子查询计数 - querybuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53336843/