Возвращаемый массив, а не объект из запроса 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']; ?>
Ответы
Ответ 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()
, чтобы получить результат массива с объектами, усеченными в строки.