如何在 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();
来自 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();