为什么这个查询不起作用?
$query = $this->_em->createQuery('
SELECT
COUNT(p) AS products_count
FROM
Application\Entity\Category c
INDEX BY c.id
LEFT JOIN c.products p
GROUP BY
c.id
');
$rows = $query->getSingleScalarResult();
我希望得到这样的结果:“category_id => products_count”数组,但它抛出了一个 Doctrine\ORM\NonUniqueResultException 而没有任何消息。
最佳答案
如果您在GROUPED
查询中COUNT
行,它将返回多个结果以及每个组的计数。在您的例子中,您将获得每个 Category
的计数。
如果您尝试对具有多个条目的结果执行 getSingleScalarResult()
,它将产生一个 Doctrine\ORM\NonUniqueResultException
。相反,您应该使用 getScalarResult()
并遍历条目。
编辑:
要将结果转换为 array("category_id"=> "products_count_value")
形式,您可以使用以下代码:
$output = array();
foreach ($rows as $category, $values) {
$output[$category] = $values['products_count'];
}
$output
现在应该包含您想要的值。
关于php - 学说 2 : Hydrate key-value array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24861411/