I - 大致 - 有这个层次结构:-
class City {
/**
* @ORMOneToMany(targetEntity="AppBundleEntityDistrict", mappedBy="city")
*/
private $districts;
}
class District {
/**
* @ORMColumn(type="boolean")
*/
private $isRemoved;
}
我正在尝试查询城市,但我不想在查询中查看已删除的地区。我当前的解决方案涉及循环遍历选区并检查已删除的属性并从返回对象中删除选区。
我的另一个选择是使用查询生成器从头开始编写详细的查询,但是随着层次结构的加深,这 - 尽管在这种情况下可能有效 - 会成倍地复杂。
对我来说
似乎很简单,也许我不太明白,但让我们试一试
$cities = $em->getRepository('AppBundle:City')->createQueryBuilder('c')
->select('c', 'd')
->leftJoin('c.districts', 'd')
->where('d.isRemoved = 0')
->getQuery()->getResult();
这应该为您提供具有关联地区集合的城市,这些集合已删除为 false。
希望这对你有帮助。