Bonjour à tous,
Je veux bien un coup de main pour comprendre ce comportement
Soit une entité A qui possède, dans ses attributs une entité B.
B possède dans ses attributs une collection d’entités C
Note: J'ai simplifié le code pour aller à l'essentiel de la situation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; class A { . /** * @var \B * * @ORM\GeneratedValue(strategy="NONE") * @ORM\ManyToOne(targetEntity="Company") * @ORM\JoinColumns({ * @ORM\JoinColumn(name="id_b", referencedColumnName="id_b" , onDelete="CASCADE") * }) */ private $b; /** * Get idB * * @return \......\Entity\B */ public function getB() { return $this->b; } }Probleme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; class B { . /** * @ORM\OneToMany(targetEntity="HourTypePriority", mappedBy="idCp") */ private $c; /** * Get C * * @return \Doctrine\Common\Collections\Collection */ public function getC() { return $this->c; } }
Voici ce qu’il se passe :
Retourne 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 em = $this->container->get('doctrine')->getManager(); $rep = $em->getRepository('A'); $a = $rep->find($id); echo "NB C: " . $a->getB()->getC()->count() . "<br>";
Retourne le bon nombre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $repB = $em->getRepository('B'); $b = $repB->find(38); //Même id que dans le $a->getB() ci-dessus bien évidement echo "Nb C: " . $b->getC()->count() . "<br />";
Il semble que le lazy load ne fonctionne que pour le premier niveau.
Avez-vous une idée ??
Merci d'avance pour le coup de main
Partager