QueryBuilder 的 select 是如何工作的?

How QueryBuilder's select work?

我有一个包含很多标记的类别。我想通过 id 获得一个类别以及所有关联的标记。

我的标记存储库中有此查询:

public function findOneByIdJoinedToCategory($id)
{
    return $this->createQueryBuilder('m')
        ->innerjoin('m.category', 'c')
        ->where('c.id = :id')
        ->setParameter('id', $id)
        ->getQuery()
        ->getResult()
    ;
}

它按预期工作,我得到了带有数组标记的类别数据,其中包含所有标记数据。但我不想要所有数据字段,所以我测试了这个查询:

public function findOneByIdJoinedToCategory($id)
{
    return $this->createQueryBuilder('m')
        ->select('m.id', 'm.name', 'm.description', 'm.vicinity', 'm.geo')
        ->innerjoin('m.category', 'c')
        ->addSelect('c.id', 'c.name')
        ->where('c.id = :id')
        ->setParameter('id', $id)
        ->getQuery()
        ->getResult()
    ;
}

当我这样做时,我除了只有我 selected 的字段,但我有一个额外的数组并得到这个错误:呼叫成员array

上的函数 getCategory()

如何 select 我的字段并获得包含所有标记的类别?

我认为你需要在这里使用 Doctrine partial objects

所以 select 看起来像这样

->select('partial m.{id, name, description...