Bonjour,

Alors, j'ai un petit problème. Comme je ne sais pas trop comment l'expliquer, voici un exemple.

Je veux faire un système d'authentification. Pour se faire, j'ai créé deux entités nommées Login (contient le nom d'utilisateur et le mot de passe) et Profil(contient les info sur l'utilisateur). Comme ces deux entités sont reliés entre elle (chacune a besoin de l'autre pour fonctionner), j'ai associé une relation OneToOne de l'entité Login vers profil, et vise versa (toutes deux non null). Pour les intéressés, voici ce que ça donne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
/**
     * @var skex\BrandyBundle\Entity\Profil
     * 
     * @ORM\OneToOne(targetEntity="skex\BrandyBundle\Entity\Profil", inversedBy="login")
     * @ORM\JoinColumn(name="profil", referencedColumnName="id", nullable=false)
     */
    private $profil;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
    /**
     * @var skex\BrandyBundle\Entity\Login
     * 
     * @ORM\OneToOne(targetEntity="skex\BrandyBundle\Entity\Login", mappedBy="profil")
     * @ORM\JoinColumn(name="login", referencedColumnName="id", nullable=false)
     */
    private $login;
.

Le problème, c'est lorsque je veux enregistrés des entrées (via persist(Login) et persist(Profil)), ça ne marche. D'après ce que j'ai cru comprendre, c'est que, bien que je persiste mes deux entités avant de faire un flush, la première entité (ici Login) va vérifier ses contraintes, se rendre compte que la contrainte sur l'entité Profil n'est pas valide (forcément, car aucune entrée n'a été enregistré dans Login) et afficher un message d'erreur. J'ai permis qu'une des deux relation OneToOne soit null (de Login vers Profil) et ça marche.

Alors, ma question est, est-ce qu'il y a un moyen de dire à Doctrine d'attendre avant d'effectuer ses règles de validation ? Ou bien, c'est ma façon de faire qui n'est pas correctement ? Ou encore, l'erreur est tout autre ?

Merci