如何在Doctrine ORM

问题描述

我有一个“砝码”表,其中有各种摄像机的砝码数量。 我想对这台相机的最后一个数字求和,因此我正在使用两个查询。 第一个查询为每个摄像机选择最大ID,第二个查询为这些ID选择重量数。

public function maxIds($cameras)
 {
     return $this->createQueryBuilder("c")
         ->select('MAX(c.id) ')
         ->where('c.camera IN (:value)')
         ->setParameter('value',$cameras)
         ->groupBy('c.camera')
         ->getQuery()
         ->getArrayResult();
 }

public function totalWeight($ids)
{
    return $this->createQueryBuilder("c")
        ->select('SUM(c.number)')
        ->where('c.id IN (:value)')
        ->setParameter('value',$ids)
        ->getQuery()
        ->getOneOrNullResult();
}

这两个查询工作正常,但是我想将它们组合成一个查询。 我正在尝试:

public function testWeight($cameras)
{
    $qr = $this->createQueryBuilder('c')
        ->select('MAX(c.id) ')
        ->where('c.camera IN (:value)')
        ->setParameter('value',$cameras)
        ->groupBy('c.camera');

    $qr->andWhere($qr->expr()->in('c.id',$this->_em->createQueryBuilder()
             ->select('SUM(c.number)')
             ->getDQL()
    ));

    return  $qr->getQuery()
               ->getOneOrNullResult();
}

但是我不能成功。 我该如何解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)