Bonsoir à tous,
je souhaiterai faire un manyToMany bidirectionnel.
Dans l'entité propriétaire (RefCultures), aucun souci de consultation/ajout/modification.
Dans l'entité inverse (CultTypeRegroupementCulture), je peux voir les données de l'entité propriétaire, mais par contre, dans la modification, ils ne persistent pas les entités de cette relation.
dans le contrôleur de cette entité inverse, pour le updateAction, je fais ceci :
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 <?php if ($editForm->isValid()) { $em->persist($entity); foreach($entity->getRefcultures() as $refculture) $em->persist($refculture); $em->flush(); foreach($entity->getRefcultures() as $refculture) echo 'il y a '.$refculture->getLibelleusage(); throw $this->createNotFoundException('il y a culture'); return $this->redirect($this->generateUrl('culttyperegroupementculture')); } ?>
J'ai fait un peu de debug dans cette méthode avec mon foreach, je vois bien les références cultures, par contre, ils ne sont pas persistés (vérif en voulant les éditer à nouveau, également dans la bdd).
Alors, le setter dans l'entité inverse (CultTypeRegroupementCulture) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php public function addRefCultures(...\Entity\RefCultures $refcultures) { $this->refcultures[] = $refcultures; $refcultures->addCultTypeRegroupementCulture($this); } ?>
La déclaration dans l'entité inverse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php /** * * @ORM\ManyToMany(targetEntity="...\Entity\RefCultures",mappedBy="typesregroupementscultures", cascade={"persist"}) */ private $refcultures; ?>
La déclaration dans l'entité propriétaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php /** * * @ORM\ManyToMany(targetEntity="...\Entity\CultTypeRegroupementCulture",inversedBy="refcultures") * @ORM\JoinColumn(nullable=true) */ private $typesregroupementscultures; ?>
Si je peux préciser les choses, n'hésitez pas.
Merci d'avance.
Partager