我有一个学说查询,我试图将类似的行分组并总和它们的数量(QTY)。看起来像这样,但是它不起作用...
public function getProducts($id, $account_id){
$query = $this->getEntityManager()
->createQuery('
SELECT p, pr, sum(p.qty) as qty
FROM WICPurchaseOrderBundleEntityPurchaseOrderProductsStatus p
JOIN p.product pr
WHERE p.inventoryLocation = :id
AND p.account = :account_id
GROUP BY p.product')
->setParameter('id', $id)
->setParameter('account_id', $account_id);
try{
return $query->getArrayResult();
}catch (DoctrineORMNoResultException $e) {
return $e;
}
}
我有以下错误:
Key "product" for array with keys "0, qty" does not exist in my twig template
如果我删除" sum(p.qty)作为QTY"的工作正常,则它不会给我我要分组的列的总和。
这是我的树枝模板中的循环。
{% for productAction in productActions %}
<tr>
<td>{{ productAction.product.id }}</td>
<td>{{ productAction.product.sku }}</td>
<td>{{ productAction.product.name }}</td>
<td>{{ productAction.qty }}</td>
<td></td>
</tr>
{% endfor %}
任何人都知道为什么会发生这种情况。
http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html#pure-and-mixed-mixed-results
结果的性质可以是两种形式:纯和混合。默认情况下,结果类型是纯净的,但是一旦标量值(例如汇总值或其他不属于实体的标量值)出现在DQL查询的选择部分中,则结果将混合。混合结果的结构与纯结果不同,以适应标量值。
纯粹的结果通常看起来像这样:
array(
'0' => obj1,
'1' => obj2
);
另一方面,混合的结果具有以下一般结构:
array(
'0' => array(
'0' => Obj1,
'qty' => your scalar value sum(p.qty)
),
'1' => array(
'0' => Obj2,
'qty' => your scalar value sum(p.qty)
),
);