我有两个实体:人物和文件
一个人可以有n个孩子:
/**
*
* @ORM\ManyToOne(targetEntity="People")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="dad_id", referencedColumnName="id")
* })
*/
private $dad;
/**
*
* @ORM\OneToMany(targetEntity="People", mappedBy="dad")
*/
private $childrens;
一个人可以拥有n份文件:
的DocumentEntity:
/**
*
* @ORM\ManyToOne(targetEntity="People")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="people_id", referencedColumnName="id")
* })
*/
private $people;
我希望在一个查询中获取所有人(及其子女)及其类型为License的文档:
$qb = $this->em->getRepository('People')->createQueryBuilder('p');
$qb
->select(array('p','d'))
->leftJoin('p.documents','d','WITH','d.type = :type')
->setParameter('type','license')
;
$peoples = $qb->getQuery()->getResult();
很好,如果我调用$ people-> getDocuments()只返回类型为'License'的文档。但当我这样做'$ people-> getChildrens()[0] - > getDocuments()'为我返回这个人的所有文件。
如何在树形结构上进行“左连接”级联?