La solicitud de recuento de Symfony QueryBuilder devuelve "matriz"

Estoy tratando de hacer una solicitud de conteo en un campo de identificación.

Tengo el siguiente código en mi controlador:

$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
    ));

Y en mi view.html.twig :

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

Devuelve el título de la categoría y la cadena "Array" justo además. Qué estoy haciendo mal ?

preguntado el 29 de noviembre de 13 a las 11:11

2 Respuestas

EL getResult() devuelve una matriz (colección) de objetos. Tienes que usar el getSingleScalarResult() función para obtener el resultado como un número simple.

De todos modos, ¿cuál es el objetivo de su código? Si desea mostrar la cantidad de categorías para cada autor, es posible que su código no funcione ya que muestra una lista de categorías pero solo cuenta las categorías de un autor.

Respondido el 19 de diciembre de 18 a las 12:12

Ah vale, no lo sabía. Sí, quiero mostrar el número de categorías de un autor. Obtengo su id con $author var. - usuario2094540

Entonces, ¿por qué usas un for bucle en las categorías? - Alabama

Eso se debió a los resultados de mi matriz usando getResults(). Estaba equivocado de hecho. Funciona con getSingleScalarResult() y elimina el bucle en la vista. Gracias por tu ayuda y explicación! - usuario2094540

Prueba esto:

$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();

y luego en ramita {{result.cnt}}

respondido 29 nov., 13:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.