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 : 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;
}
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
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 : 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'
    );
}
Mes dump() affichent bien les bonnes données par contre.
Merci d'avance si vous pouvez m'aider