Bonjour à tous,
J'ai deux entités simples : Cabinet et Personne avec des relations "OneToOne". Seulement quand j'essaie d'ajouter les deux en même temps, j'ai toujours cette erreur: Column 'personne_id' cannot be null (Ou "Column 'cabinet_id' cannot be null" quand j'inverse l'ordre d'insertion). Le problème est un cas d'école : je souhaite insérer deux entités en même temps.
Entité Cabinet :
Entité Personne :
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 class Cabinet { /** * @ORM\OneToOne(targetEntity="LogicielBundle\Entity\Personne", cascade={"persist","remove"}) * @ORM\JoinColumn(nullable=false) */ private $personne; public function setPersonne(\LogicielBundle\Entity\Personne $personne) { $this->personne = $personne; return $this; } public function getPersonne() { return $this->personne; }
Le controlleur, lui, est ultra-simple :
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 class Personne { /** * @ORM\OneToOne(targetEntity="UtilisateurBundle\Entity\Cabinet", cascade={"persist","remove"}) * @ORM\JoinColumn(nullable=false) */ private $cabinet; public function setCabinet(\UtilisateurBundle\Entity\Cabinet $cabinet) { $this->cabinet = $cabinet; return $this; } public function getCabinet() { return $this->cabinet; }
Mes dump() affichent bien les bonnes données par contre.
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 public function ajouterAction(Request $request) { $personne = new Personne(); $cabinet = new Cabinet(); $cabinet->setPersonne($personne); $personne->setCabinet($cabinet); $form = $this->createForm('utilisateur_cabinet_form', $cabinet); $this->submit($form); if ($form->handleRequest($request)->isValid()) { $em = $this->getDoctrine()->getManager(); dump($personne); dump($cabinet); $em->persist($cabinet); $em->flush(); $request->getSession()->getFlashBag()->add('success', 'Le cabinet « '.$cabinet->getVersions()[0]->getLibelle().' » a été ajouté.'); return $this->redirect($this->generateUrl('utilisateur_cabinet_index')); } return array( 'form' => $form->createView(), 'title' => 'Ajouter un nouveau cabinet' ); }
Merci d'avance si vous pouvez m'aider![]()
Partager