IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Doctrine2 PHP Discussion :

Deux entités reliées par une contrainte


Sujet :

Doctrine2 PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 28
    Par défaut Deux entités reliées par une contrainte
    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

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Par défaut
    Que contient le champs profil de la table profil, un id ?

    Sinon, il me semble que tu as inversé les target entity, le target entity de Profil doit être bla/bla/Login et vice versa il me semble.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 28
    Par défaut
    Salut,

    Je crois que je me suis mal expliqué. Le premier bout de code (avec private $profil) appartient à l'entité Login et le deuxième bout de code à l'entité Profil. Pour la variable profil, il contient une référence à l'entité Profil, ce qui permet d'accéder aux variables de profil via login.

Discussions similaires

  1. Update sur deux table relié par une clé étrangère.
    Par labib23dz dans le forum Développement
    Réponses: 5
    Dernier message: 18/04/2019, 11h40
  2. [Criteria] Au moyen de criteria faire deux jointures reliées par un OR
    Par Frederik dans le forum Hibernate
    Réponses: 2
    Dernier message: 02/07/2012, 13h46
  3. Nuage de points reliés par une courbe lissée
    Par logipro dans le forum Excel
    Réponses: 6
    Dernier message: 28/05/2010, 19h08
  4. Réponses: 2
    Dernier message: 22/10/2008, 11h51
  5. 10g Cibler les colonnes concernées par une contrainte
    Par GSXRider dans le forum Administration
    Réponses: 1
    Dernier message: 31/03/2008, 17h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo