对子集合进行原则选择/过滤

时间:2017-03-16 13:52:15

标签: symfony doctrine-orm

我 - 通过这种层次结构: -

class City {

/**
 * @ORM\OneToMany(targetEntity="AppBundle\Entity\District", mappedBy="city")
 */
private $districts;
}

class District {

 /**
 * @ORM\Column(type="boolean")
 */
private $isRemoved;

}

我试图查询城市,但我不想查看查询中删除的区域。 我当前的解决方案涉及在区域上循环并检查已删除的属性并从返回对象中删除区域。

我的另一个选择是使用查询构建器从头开始编写详细查询,但是在这种情况下可能会起作用 - 随着层次结构的加深,它会变得越来越复杂。

1 个答案:

答案 0 :(得分:0)

对我来说似乎很简单,也许我不太了解,但是试一试

$cities = $em->getRepository('AppBundle:City')->createQueryBuilder('c')
   ->select('c', 'd')
   ->leftJoin('c.districts', 'd')
   ->where('d.isRemoved = 0')
   ->getQuery()->getResult();

这应该会为您的城市提供关联的区域集合,其中isRemoved为false。

希望这会对你有所帮助。