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...
我有一个包含很多标记的类别。我想通过 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...