Symfony2&;Doctrine2:自定义实体存储库查询,用于在联接表没有关联行时检索单个结果
我有两个实体/表格,一个用于县,一个用于市。一个特定的县与城市有一个OneToMany关系,我正在尝试在实体存储库中进行一个自定义查询,以根据县的ID查询县,并返回该县及其对应的城市 如果县里有城市分配,我的查询目前似乎很有效,但如果县里还没有任何城市,条令会给我一个“找不到县城实体”的例外 我相信我的查询中有一个逻辑错误,但是我很难重新编写它,如果没有城市与之关联,那么只能通过ID返回County 我的问题是:Symfony2&;Doctrine2:自定义实体存储库查询,用于在联接表没有关联行时检索单个结果,symfony,doctrine-orm,repository,entity,Symfony,Doctrine Orm,Repository,Entity,我有两个实体/表格,一个用于县,一个用于市。一个特定的县与城市有一个OneToMany关系,我正在尝试在实体存储库中进行一个自定义查询,以根据县的ID查询县,并返回该县及其对应的城市 如果县里有城市分配,我的查询目前似乎很有效,但如果县里还没有任何城市,条令会给我一个“找不到县城实体”的例外 我相信我的查询中有一个逻辑错误,但是我很难重新编写它,如果没有城市与之关联,那么只能通过ID返回County 我的问题是: class CountyRepository extends EntityRepo
class CountyRepository extends EntityRepository
{
public function findOneByIdJoinedToCities($id)
{
$qb = $this->createQueryBuilder('c')
->addSelect('p')
->join('c.cities', 'p')
->where('p.county = :id')
->setParameter('id', $id)
;
$query = $qb->getQuery();
try {
return $query->getSingleResult();
} catch (\Doctrine\ORM\NoResultException $e){
return null;
}
}
}
如果还没有为县分配任何城市,我如何更改上述代码以仍然返回县的单个结果
谢谢你的帮助 基本SQL问题:使用左连接。例如:
$qb = $this->createQueryBuilder('c')
->addSelect('p')
->leftJoin('c.cities', 'p')
// ^^^^^^^^
->where('p.county = :id')
->setParameter('id', $id)
;