【发布时间】:2016-02-01 00:47:24
【问题描述】:
我正在使用从包含城市名称的数据库中获取的信息构建一个图表。目前,我正在计算每个不同城市名称在数据库中出现的次数。
我的做法是:
我在数据库中找到城市名称并将结果推送到$result。
然后我继续执行一个 while 循环,在每次迭代时创建一个查询构建器,然后我运行一个查询以查找城市出现的次数并将结果推送到 $count,然后推送值$count 到包含其对应城市名称的 $result。
目前数据库中有 30 个城市,这意味着每次加载页面时我都会运行 30 个查询,而且这个数量会越来越高,谁能指出我正确的方向减少这个过程,我很确定可以在查找 $result 的同时找到每个城市的计数,但我不确定如何并且我没有在网上找到任何东西。
$qb = $entityManager->createQueryBuilder();
$qb->select('accident.city')->distinct();
$qb->from('VisDatasetBundle:Accident','accident');
$result = $qb->getQuery()->getResult();
$i = 0;
$qb->delete();
while($i < count($result)){
$qb = $entityManager->createQueryBuilder();
$qb->select('count(accident.city)');
$qb->from('VisDatasetBundle:Accident', 'accident');
$qb->where('accident.city = \'' . $result[$i]['city'] . '\'');
$count = $qb->getQuery()->getResult();
$result[$i]['count'] = $count[0]['1'];
$qb->delete();
$i++;
}
return $result;
【问题讨论】:
标签: php mysql symfony doctrine-orm dql