使用Doctrine在Symfony2中进行非常低效的DQL查询。需要改进

时间:2016-02-01 00:47:24

标签: php mysql symfony doctrine-orm dql

我正在构建一个图表,其中包含从包含城市名称的数据库中获取的信息。目前,我正在计算每个不同城市名称在数据库中出现的次数。

我这样做的方式是:

我在数据库中找到城市名称,并将结果推送到broken

然后我继续使用while循环,在每次迭代时创建一个查询构建器,然后运行查询以查找城市出现的次数并将结果推送到$result,然后推送$count的值$count包含其对应的城市名称。

目前数据库中有30个城市,这意味着每次加载页面时我都会运行30个查询,而且这个数量只会越来越高,有人能指出我正确的方向如何减少这个过程,我很确定可以在找到$result的同时找到每个城市的数量,但我不确定我是如何在网上找到任何东西的。

$result

1 个答案:

答案 0 :(得分:1)

这可以帮助您...使用 groupBy 对城市进行分组,然后计算实例。

$qb = $entityManager->createQueryBuilder();
$qb->select('accident.city','count(accident.city)')
   ->from('VisDatasetBundle:Accident','accident')
   ->groupBy('accident.city');