如何从逻辑查询迭代到SUM结果

时间:2016-01-05 20:54:44

标签: symfony doctrine-orm twig

我需要一些关于在教义中迭代结果的帮助。这是我的查询代码:

$consulta = $em->createQuery('
SELECT bcr, SUM(bcr.volumenAlmacenado) as vol, SUM(bcr.pesoAlmacenado) as pes 
FROM ResiduoBundle:BodegaContieneResiduo bcr 
WHERE bcr.fechaIngreso BETWEEN :fechaP AND :fechaA AND bcr.fechaRetiro IS NULL 
GROUP BY bcr.idResiduo
'); 
        $consulta->setParameter('fechaA', $fechaActual);
        $consulta->setParameter('fechaP', $fechaPasada);
        return $consulta->getResult();

当我在mysql中运行返回时没有问题。在symfony也得到了结果。现在,当我试图在树枝上循环时,我无法做到,我认为可以在我的查询中使用我的agregate函数。我希望你能给我一些线索或类似的东西。素不相识

2 个答案:

答案 0 :(得分:0)

你应该添加mysql函数SUM的扩展,然后你可以在doctrine查询中使用SUM函数 另一种方法,您可以直接执行您的查询或本机查询的学说 尝试以下查询,您可以获得结果

$consulta = $em->executeQuery('SELECT bcr, SUM(bcr.volumenAlmacenado) as vol, SUM(bcr.pesoAlmacenado) as pes FROM ResiduoBundle:BodegaContieneResiduo bcr WHERE bcr.fechaIngreso BETWEEN :fechaP AND :fechaA AND bcr.fechaRetiro IS NULL GROUP BY bcr.idResiduo'), 
        array('fechaA'=> $fechaActual, 'fechaP' => $fechaPasada));
        return $consulta->fetchAll();

答案 1 :(得分:0)

您还可以使用原则的本机查询

use Doctrine\ORM\Query\ResultSetMapping;

$rsm = new ResultSetMapping();
$rsm->addEntityResult('ResiduoBundle:BodegaContieneResiduo', 'bcr');
$rsm->addFieldResult('bcr', 'idResiduo', 'idResiduo');
$rsm->addFieldResult('bcr', 'volumenAlmacenado', 'vol');
$rsm->addFieldResult('bcr', 'pesoAlmacenado', 'pes');

$sqlQuery = "SELECT bcr.idResiduo as idResiduo, SUM(bcr.volumenAlmacenado) as vol, SUM(bcr.pesoAlmacenado) as pes
        FROM ResiduoBundle:BodegaContieneResiduo bcr
        WHERE bcr.fechaIngreso BETWEEN :fechaP AND :fechaA
        AND bcr.fechaRetiro IS NULL 
        GROUP BY bcr.idResiduo";
$query = $em->createNativeQuery($sqlQuery, $rsm)
     ->setParameter('fechaA', $fechaActual);
     ->setParameter('fechaP', $fechaPasada);
$query->getResult();