Symfony 2.2 と Doctrine を使用しています。価格のフィールドを持つエンティティ Product があります。私のコントローラーでは、いくつかの製品を取得する必要があります。だから私はこのようなものを持っています:
$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();
}
クエリを作成すると、必要な製品を取得するためとそれらの合計を見つけるための 2 つのクエリは、これと合計が->add('select', 'SUM(p.price)')
返されるだけでほぼ同じになりますSingleScalarResult
が、この重複はありませんか? なので、どちらが良いとは言えません。
ベストプラクティスが何であるかを教えていただければ、とても感謝しています。事前にどうもありがとうございました!:)