Kam*_*mil 6 php symfony doctrine-orm
我正在尝试检索具有唯一uid的许多行。
$qb->select('COUNT() as cnt')
->from($type, 'c')
->groupBy('c.organization, c.process_role, c.domain, c.year')
->getQuery()->getSingleScalarResult()
Run Code Online (Sandbox Code Playgroud)
但是它返回一组组计数。我应该怎么写这个正确的?
终于可以了,但是有点难看
$count = $this->_em->createQuery( 'SELECT COUNT(c.id) FROM '.$type.' as c WHERE c.id IN ('
. 'SELECT c1.id FROM ' . $type . ' c1 '
. 'GROUP BY c1.organization, c1.process_role, c1.domain, c1.year)')
->getSingleScalarResult();
Run Code Online (Sandbox Code Playgroud)
尝试将您的单身groupBy分解为addGroupBy功能:
$qb->select('COUNT(c) as cnt')
->from($type, 'c')
->groupBy('c.organization')
->addGroupBy('c.process_role')
->addGroupBy('c.domain')
->addGroupBy('c.year')
->getQuery()->getSingleScalarResult();
Run Code Online (Sandbox Code Playgroud)
但是,这实际上会返回相同的结果,因为它只会将结果按这4个变量分组为唯一的集合。相反,您应该使用DISTINCT选择方法并计算结果行。
$rows = $this->getDoctrine()->getManager()
->createQuery(
'SELECT DISTINCT c.organization, c.process_role, c.domain, c.year FROM ' . $type . ' c'
)
->getArrayResult();
$count = count($rows);
Run Code Online (Sandbox Code Playgroud)
这是我唯一可以使用的已知方法,因为DQL不支持任何替代策略(例如SELECT COUNT(*) FROM (SELECT DISTINCT ... ))
| 归档时间: |
|
| 查看次数: |
12031 次 |
| 最近记录: |