如何在Doctrine2的查询结果中获取Collection

mkr*_*mer 32 doctrine doctrine-orm

我试图使用doctrine2执行查询,并需要它返回一个集合对象.

简化代码段:

$players = $this->getEntityManager()
    ->createQueryBuilder()
    ->select('p')
    ->from('...\Player', 'p')
    ->getQuery()
    ->getResult();
Run Code Online (Sandbox Code Playgroud)

返回的对象是Player的数组.

有关查询结果格式的信息说:

结果是对象的简单集合(纯)或对象嵌套在结果行(混合)中的数组.

结果类型取决于什么以及如何获得集合对象?

小智 63

getResult()总是返回一个数组.如果你想要一个集合,你必须将getResult()返回的数组传递给Doctrine的ArrayCollection

例如

use Doctrine\Common\Collections;

$result = $this->getEntityManager()
    ->createQueryBuilder()
    ->select('p')
    ->from('...\Player', 'p')
    ->getQuery()
    ->getResult();

$players = new Collections\ArrayCollection($result);
Run Code Online (Sandbox Code Playgroud)