我有一個家譜這樣的:自參照孩子不附
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
這是一個想法,我雖然沒有。我會試一試 –