我有两个实体/表,一个用于县,一个用于城市。一个特定的县与城市具有 OneToMany 关系,我正在尝试在实体存储库中进行自定义查询,以根据其 ID 查询一个县并返回该县和与其对应的城市。
如果县有分配的城市,我的查询目前似乎工作得很好,但如果它还没有任何城市,Doctrine 会给我一个“无法找到县实体。”例外。
我相信我的查询中存在逻辑错误,但是如果没有城市与之关联,我很难重写它以仅按 ID 返回县。
我的查询:
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;
}
}
}
如果尚未分配城市,我如何更改上面的代码以仍然返回一个单一的县结果?
谢谢您的帮助!