我正在使用 Symfony 2.2 和 Doctrine。我有一个实体产品,它有一个价格字段。在我的控制器中,我需要获取一些产品。所以我有这样的事情:
$products = $this->productRepository->findNeededProducts(some criteria for the products);
然后我需要找到所有需要的产品的价格总和。
哪个更好更快 - 做这样的事情:
$sum = 0;
foreach ($products as $p) {
$sum += $p->getPrice();
}
或者像这样编写一个新的查询方法:
public function findSumofProcucts(same criteria here)
{
$q = $this->createQueryBuilder('p')
->add('select', 'SUM(p.price)')
->where('p.user = :user') //for example
->setParameter('user', $user)
->getQuery();
return $q->getSingleScalarResult();
}
如果我编写查询,这两个查询 - 用于获取所需产品和查找它们的总和将几乎相同,只有总和将具有->add('select', 'SUM(p.price)')
并将返回SingleScalarResult
,这不是重复吗?所以我无法决定哪个更好。
如果您告诉我最佳做法是什么,我将不胜感激。非常感谢您!:)