Symfony QueryBuilder计数请求返回“;数组";

Symfony QueryBuilder计数请求返回“;数组";,symfony,count,query-builder,Symfony,Count,Query Builder,我正在尝试对id字段进行计数请求 我的控制器中有以下代码: $qb = $em->createQueryBuilder(); $qb->select('count(c.id)') ->from('MyBundle:Category', 'c') ->where('c.author = :aut') ->setParameter('aut', $author); $result = $qb->getQuery()

我正在尝试对id字段进行计数请求

我的控制器中有以下代码:

$qb = $em->createQueryBuilder();
$qb->select('count(c.id)')
        ->from('MyBundle:Category', 'c')
        ->where('c.author = :aut')
        ->setParameter('aut', $author);

$result = $qb->getQuery()->getResult();

return $this->render('MyCategoryBundle:Category:categories.html.twig', array(
       'categories' => $categories,
       'result' => $result
    ));
在my view.html.twig中:

{% for category in categories %}      
       <li>
           {{ category.title }} 
           {% for total in  result %}
                {{ total }}
           {% endfor %}
      </li>          
{% endfor %}
{%用于类别中的类别%}
  • {{category.title}} {结果%中的总数为%} {{total}} {%endfor%}
  • {%endfor%}
    它返回类别标题和字符串“Array”。我做错了什么?

    getResult()
    返回一个对象数组(集合)。为了得到一个简单的数字,您必须使用

    不管怎样,代码的目标是什么?如果要显示每个作者的类别数,您的代码可能无法工作,因为您显示了一个类别列表,但只计算一个作者的类别数。

    请尝试以下操作:

    $qb = $em->createQueryBuilder();
    $qb->select('count(c.id) AS cnt')
            ->from('MyBundle:Category', 'c')
            ->where('c.author = :aut')
            ->setParameter('aut', $author);
    
    $result = $qb->getQuery()->getResult();
    

    然后在twig{{result.cnt}}

    哦,好吧,我不知道。是的,我想显示一个作者的类别数。我用$author变量获取它的id。那么为什么在类别上使用
    for
    循环呢?这是由于我使用getResults()得到了数组结果。我确实错了。它使用getSingleScalarResult()并删除视图中的循环。谢谢你的帮助和解释!