如何在findAll()中获取数组结果 - Doctrine?

Har*_*han 4 doctrine-query symfony doctrine-orm

我需要findAll()在Doctrine中使用Array获取数据库中的所有记录,My Query就是这样的东西

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

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

array:4 [?
0 => Categories {#323 ?}
1 => Categories {#326 ?}
2 => Categories {#329 ?}
3 => Categories {#332 ?}
]
Run Code Online (Sandbox Code Playgroud)

我犯了什么错误?

xab*_*buh 11

该findAll()方法没有任何参数.例如,您可以使用存储库的createQueryBuilder()方法来实现您想要执行的操作:

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

  • 对此感到抱歉。事实上,我忘记将别名传递给“createQueryBuilder()”方法。我修正了我的答案。 (2认同)
  • 你还必须添加``use Doctrine\ORM\Query;`` (2认同)

Pas*_*OCH 5

可以$query->getArrayResult() 用作快捷方式$query->getResult(Query::HYDRATE_ARRAY)

学说水化模式