我正在构建一个查询 throw querybuilder 对象,例如
$qb = $em->createQueryBuilder()
->select('n, t, ns1m')
->from('App\Entity\Nuclei','n')
->leftJoin('n.statistiche1M', 'ns1m', 'WITH', 'DATE_PART(\'year\', ns1m.dataora) = YEAR(CURRENT_DATE())')
->leftJoin('n.codicitag', 't')
->where('n.comune = :id_comune')
->setParameter('id_comune', $this->user->getComune()->getId());
此查询返回实体对象“nucleo”的数组:
array:3 [▼
0 => App\Entity\Nuclei { ... }
1 => App\Entity\Nuclei { ... }
2 => App\Entity\Nuclei { ... }
我想添加另一列以供选择
->addSelect('SUM(ns1m.totale_peso_conferimenti_indifferenziata) AS total_test')
但现在的结果是:
array:2 [▼
0 => array:2 [▼
0 => App\Entity\Nuclei {#1671 ▶}
"total_test" => 1520
]
1 => array:2 [▶]
]
n.codicitag 是一个单向关系,是其他对象的集合
如何处理?做了很多测试都没有成功
答案 0 :(得分:1)
您要求的结果是什么?结果看起来不错。您获得每个 Nuclei 对象的总和。
如果你需要总和而不改变结果结构,创建额外的查询:
$qb = $em->createQueryBuilder()
->select('SUM(ns1m.totale_peso_conferimenti_indifferenziata) AS total_test')
->from('App\Entity\Statistiche1M','s1m')
->where('DATE_PART(\'year\', ns1m.dataora) = YEAR(CURRENT_DATE())');
此查询返回按当前年份过滤的总和。
答案 1 :(得分:0)
你可以试试:
const char*
因为 addSelect() 创建新数组。