提问者:小点点

如何在findAll()中获得数组结果?


我需要获取数据库中的所有记录作为数组使用findAll()在教义中,我的查询是这样的

$result = $this->getDoctrine()
                ->getRepository('CoreBundle:Categories')
                ->findAll(\Doctrine\ORM\Query::HYDRATE_ARRAY);

即使将水合模式设置为HYDRATE_ARRAY,我也会将结果作为对象

array:4 [▼
0 => Categories {#323 ▶}
1 => Categories {#326 ▶}
2 => Categories {#329 ▶}
3 => Categories {#332 ▶}
]

我犯了什么错误?


共3个答案

匿名用户

findAll()方法没有任何参数。例如,您可以使用存储库的createQueryBuilder()方法来实现您想要做的事情:

use Doctrine\ORM\Query;

// ...

$query = $this->getDoctrine()
    ->getRepository('CoreBundle:Categories')
    ->createQueryBuilder('c')
    ->getQuery();
$result = $query->getResult(Query::HYDRATE_ARRAY);

匿名用户

可以使用$query-

学说水合模式

匿名用户

DQL SELECT查询返回结果的格式可能会受到所谓的模式的影响,因此不能将其用于findAll()。您可以在下面尝试:

$em = $this->getDoctrine()->getManager();
$result = $em->createQuery('select m from CoreBundle:Categories m')
        ->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);