我有一个家谱这样的:自参照孩子不附
class Family
{
/**
* @var integer
*
* @ORM\Column(type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var Family
*
* @ORM\ManyToOne(targetEntity="Family", inversedBy="children")
*/
private $parent;
/**
* @var string
*
* @ORM\Column(name="name", type="string")
*/
private $name;
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="Family", mappedBy="parent")
*/
private $children;
// [...]
}
我试图findAll()
,并得到家长和孩子连接
$familyRepo = $this->em->getRepository(Family::class);
$families = $familyRepo->findAll();
foreach ($families as $family) {
dump($family->getParent()->getName());
}
我可以看到父母的名字甩并且只执行一个查询,所以他们很好地连接。
但是,如果我试图表明孩子:
dump($family->getChildren()->count());
我看到尽可能多的查询,有家庭。
我怎样才能让父母亲陪伴的孩子? (没有更多疑问)
我忘了什么?
我希望孩子们不要一直热切地提取。除此之外,我也尝试过,但某些家庭仍然加载了额外的查询。 –
然后,在您的FamilyRepository中,您需要添加一个'findAllSomething'方法,您可以在其中添加连接“children”关系的查询,以便在单个查询中获取它们。当你想要使用这种查找器而不是普通的'findAll'来保存查询时。 – dlondero
这是一个想法,我虽然没有。我会试一试 –