最好使用DQL获取列计数或获取集合然后计数?

时间:2011-01-21 13:51:39

标签: doctrine doctrine-orm dql

我很确定DQL将成为可行的方法,但我想知道Doctrine,我使用的是Doctrine 2,是否有某种程度可以返回行数。我不会使用行本身,我只想要计数。

2 个答案:

答案 0 :(得分:30)

我是Doctrine2的新手,但看起来你可以这样做:

$query = $em->createQuery('SELECT COUNT(u.id) FROM Entities\User u');
$count = $query->getSingleScalarResult();

来源(使用Agregate函数):http://www.doctrine-project.org/docs/orm/2.0/en/reference/dql-doctrine-query-language.html#dql-select-examples

允许的聚合函数:http://www.doctrine-project.org/docs/orm/2.0/en/reference/dql-doctrine-query-language.html#aggregate-functions

答案 1 :(得分:0)

这是关于在DQL中使用聚合函数的另一个有趣的观点

http://doctrine-orm.readthedocs.org/en/latest/cookbook/aggregate-fields.html

也许您会避免创建特定查询来获取聚合值。在这种情况下,聚合字段是一个很好的选择。