Symfony flush et relation : Column cannot be NULL
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 :
Code:
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;
} |
Entité Personne :
Code:
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;
} |
Le controlleur, lui, est ultra-simple :
Code:
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'
);
} |
Mes dump() affichent bien les bonnes données par contre. :)
Merci d'avance si vous pouvez m'aider :)