如何在 Symfony 中使用 sql 聚合 SUM

How use sql aggregat SUM in Symfony

来自 table 发票(id、invoice_id、产品、价格)。

我正尝试在 Symfony 中用教义做这样的事情:

SELECT SUM(price) AS price_total
FROM Invoice
WHERE invoice_id = 1

这是我在 InvoiceRepository.php 中的请求:

 $qb = $this->_em->createQueryBuilder("i");
        $qb->select('SUM(i.price)')
            ->from('AppBundle:Invoice','i')
            ->where('i.invoice_id = :invoice')
            ->setParameter('invoice',$invoice);
        return $qb->getQuery()->getSingleScalarResult();

但是这个请求总是return我第一个值而不是总和。

有人知道怎么回事吗?

要使用SUM、AVG、COUNT等聚合函数,需要指定GROUP BY条件。像这样:

$qb = $this->_em->createQueryBuilder("i");
    $qb->select('SUM(i.price)')
        ->from('AppBundle:Invoice','i')
        ->where('i.invoice_id = :invoice')
        ->groupBy('i.invoice_id') //<- here
        ->setParameter('invoice',$invoice);
    return $qb->getQuery()->getSingleScalarResult();