php - 学说 2 : Hydrate key-value array

标签 php doctrine-orm

为什么这个查询不起作用?

    $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/

相关文章:

php - Doctrine2关系-如何设置不存在的关联实体对象

symfony - 检查 prod env 中的学说设置

php - 在 ZF2 中使用表单注释和 DoctrineORM 在 composedObject 中呈现值

php - 可以使用多个/嵌套的 MySQLi 语句吗?

php - 如何在php中维护显示顺序字段

php - MySQL .. 使用全文搜索还是使用 Like?什么是更好的?

php - Symfony 从实体标题创建 slug

php - 如何使用弄乱我的页面的外部 css 样式表?

php - Symfony Doctrine,从带有连接的子查询中选择

symfony - 如何将 ORM 实体添加到模型