Symfony QueryBuilder计数请求返回“数组”

时间:2013-11-29 11:33:11

标签: 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()->getResult();

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

在我的view.html.twig中:

{% for category in categories %}      
       <li>
           {{ category.title }} 
           {% for total in  result %}
                {{ total }}
           {% endfor %}
      </li>          
{% endfor %}

它还返回类别标题和字符串“Array”。我做错了什么?

2 个答案:

答案 0 :(得分:3)

getResult()返回一个对象的数组(集合)。您必须使用getSingleScalarResult() function才能将结果作为简单数字。

无论如何,你的代码的目标是什么?如果要显示每个作者的类别数,您的代码可能不起作用,因为您显示了一个类别列表,但您只计算一个作者的类别。

答案 1 :(得分:0)

试试这个:

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