web-dev-qa-db-fra.com

Retourne un tableau, pas un objet de Doctrine query - Symfony2

J'utilise ceci:

$this->getDoctrine()->getRepository('MyBundle:MyEntity')->findAll(array(), Query::HYDRATE_ARRAY);

Je pensais que cela devrait garantir qu'il renvoie un tableau d'un tableau, mais il renvoie toujours un tableau d'objets.

J'ai besoin que le résultat entier soit renvoyé sous forme de tableau d'un tableau afin que je puisse faire ce genre de chose (exemple stupide, mais il explique ce que je veux dire):

<?php
$result = $this->getDoctrine()->getRepository('MyBundle:MyEntity')->findAll('return-an-array');
?>    
This is the age of the person at the 5th record: <?php echo $result[4]['age']; ?>
15
user2143356

Selon cela classe EntityRepository , findAll ne prend pas plusieurs arguments.

Le code ci-dessous devrait faire ce que vous voulez

$result = $this->getDoctrine()
               ->getRepository('MyBundle:MyEntity')
               ->createQueryBuilder('e')
               ->select('e')
               ->getQuery()
               ->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
41
Thomas Potaire

Vous pouvez également utiliser la fonction getArrayResult() au lieu de getResult(). Il renvoie un tableau de données à la place:

$query = $em->createQuery("SELECT test FROM namespaceTestBundle:Test test");
$tests = $query->getArrayResult();
24
Samir Mengadi