2

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が、この重複はありませんか? なので、どちらが良いとは言えません。

ベストプラクティスが何であるかを教えていただければ、とても感謝しています。事前にどうもありがとうございました!:)

4

1 に答える 1