Bonjour à tous, cela fait 24h que je m'arrache les cheveux sur un bug de ma relation bi-directionnelle.
Tout d'abord les entitées concernées:
La classe Js qui représente une journée de travail.
La classe Pause qui représente une pause, une journée de travail peut avoir plusieurs pause.
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 class Js { /** * @var integer $id * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @ORM\OneToMany(targetEntity="Fi\ServiceBundle\Entity\Pause", mappedBy="js") */ private $pause; /*...*/
Le controller:
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 class Pause { /** * @var integer $id * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @ORM\ManyToOne(targetEntity="Fi\ServiceBundle\Entity\Js", inversedBy="pause") * @ORM\JoinColumn(name="js_id", referencedColumnName="id") */ private $js;
Mon problème, quand je valide mon formulaire, tout fonctionne, les données sont bien enregistrées SAUF le js_id (id de la js dans la table pause) qui lui reste à NULL. J'ai éplucher la doc durant des heures, parcouru des kilomètres de forum, je ne vois pas mon erreur, mon code semble correct.
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 $js = new Js(); $form = $this->createForm(new JsType(), $js); $user = $this->container->get('security.context')->getToken()->getUser(); $request = $this->get('request'); if ($request->getMethod() == 'POST') { $form->bindRequest($request); if ($form->isValid()) { $js = $form->getData(); $js->setUser($user); $em = $this->getDoctrine()->getEntityManager(); foreach ($js->getPause() as $pause) { $em->persist($pause); } $em->persist($js); $em->flush(); } }
J'ai besoin de votre aide, merci.
Partager