我正在尝试检索许多具有唯一 uid 的行。
$qb->select('COUNT() as cnt')
->from($type, 'c')
->groupBy('c.organization, c.process_role, c.domain, c.year')
->getQuery()->getSingleScalarResult()
但它返回一个组计数数组。我该如何正确地写这个?
终于可以了,但是有点丑
$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();
尝试分手你的单身groupBy
into 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();
然而,这实际上会返回相同的结果,因为它只是根据这 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);
这是我知道的唯一可行的方法,因为 DQL 不支持任何替代策略(例如SELECT COUNT(*) FROM (SELECT DISTINCT ... )
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)