Подтвердить что ты не робот

Возвращаемый массив, а не объект из запроса Doctrine - Symfony2

Я использую это:

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

Я думал, что должен гарантировать, что он возвращает массив массива, но он все равно возвращает массив объектов.

Мне нужен весь результат, возвращаемый как массив массива, поэтому я могу делать такие вещи (глупый пример, но он объясняет, что я имею в виду):

<?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']; ?>
4b9b3361

Ответ 1

В соответствии с этим класс EntityRepository, findAll не принимать несколько аргументов.

Код ниже должен делать то, что вы хотите

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

Ответ 2

Вы также можете использовать функцию getArrayResult() вместо getResult(). Вместо этого он возвращает массив данных:

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

Ответ 3

Используйте getScalarResult(), чтобы получить результат массива с объектами, усеченными в строки.