17

我正在使用这个:

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

3 回答 3

45

根据这个EntityRepository 类findAll不要接受多个参数。

下面的代码应该做你想做的

$result = $this->getDoctrine()
               ->getRepository('MyBundle:MyEntity')
               ->createQueryBuilder('e')
               ->select('e')
               ->getQuery()
               ->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
于 2013-07-06T04:26:11.427 回答
26

您也可以使用该getArrayResult()函数代替getResult(). 它返回一个数据数组:

$query = $em->createQuery("SELECT test FROM namespaceTestBundle:Test test");
$tests = $query->getArrayResult();
于 2013-12-12T16:12:07.317 回答
-1

用于getScalarResult()获取对象被截断为字符串的数组结果。

于 2017-08-18T01:22:24.643 回答