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 :

Une entité avec plusieurs relations oneToOne


Sujet :

Doctrine2 PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 21
    Points : 28
    Points
    28
    Par défaut Une entité avec plusieurs relations oneToOne
    Bonjour je voudrais créer trois relations de type oneToOne pour une entité.
    Petit schema de ce que j'essaie de faire :
    Blog (1) < ---> (n) Article (1) < ---> (1) Utilisateur
    Blog(1) < ---> (n) Page(1) < ---> (1) Utilisateur

    Mon fichier de configuration pour l'entité utilisateur :
    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
    25
     
     oneToOne:
          Blog:
              targetEntity: Blog
              inversedBy: Utilisateur
              joinColumn:
                  name: blog_id
                  referencedColumnName: id
              cascade: ["remove"]
      oneToOne:
          Article:
              targetEntity: Article
              inversedBy: Utilisateur
              joinColumn:
                  name: article_id
                  referencedColumnName: id
              cascade: ["remove"]
      oneToOne:
          Page:
              targetEntity: Page
              inversedBy: Utilisateur
              joinColumn:
                  name: page_id
                  referencedColumnName: id
              cascade: ["remove"]
    Mon problème est que la seule dernière relation oneToOne est prise en compte.

    Merci d'avance

    Ps : le nom des entités sont fictive

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,
    Dans ton fichier de config tu dois avoir une seule section OneToOne qui liste tes différentes relation.
    Dans ton code les deux premières sont effacées par la troisième
    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
     
    oneToOne:
          Blog:
              targetEntity: Blog
              inversedBy: Utilisateur
              joinColumn:
                  name: blog_id
                  referencedColumnName: id
              cascade: ["remove"]
          Article:
              targetEntity: Article
              inversedBy: Utilisateur
              joinColumn:
                  name: article_id
                  referencedColumnName: id
              cascade: ["remove"]
          Page:
              targetEntity: Page
              inversedBy: Utilisateur
              joinColumn:
                  name: page_id
                  referencedColumnName: id
              cascade: ["remove"]
    le nom des entités sont fictive
    On est bien d'accord que pour un blog ce serait :
    Article hasOne User
    User hasMany Articles

  3. #3
    Membre habitué
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Mai 2011
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef d'entreprise
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2011
    Messages : 122
    Points : 169
    Points
    169
    Par défaut
    Bonjour,

    Je n'ai pas l'habitude d'utiliser le format yml mais à vue de nez, je dirais que le mot clef OneToOne ne doit revenir qu'une seule fois; sinon, seule la dernière occurrence est prise en compte.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2012
    Messages : 21
    Points : 28
    Points
    28
    Par défaut
    Merci de votre aide c'était bien le mot clé oneToOne qui posait problème

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mars 2009
    Messages : 135
    Points : 110
    Points
    110
    Par défaut
    bonjour,
    pourquoi tu n'utilise pas les annotations ,sont plus faciles que la configuration avec xml,voici un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    /**
    * @ORM\Entity
    */
    class Client
    {
        /**
    * @ORM\OneToOne(targetEntity="Namespace\Bundle\Entity\Adresse")
    */
        private $adresse;

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 394
    Points : 347
    Points
    347
    Par défaut
    #tabbabi : justement ces annotations sont générés a partir des fichiers comme le sien (.orm.yml) en fait quand tu fais : la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console doctrine:mapping:import TutoAppBundle annotation
    Le générateur de console va aller chercher les informations des champs, relations de la table ... dans ce fichier et les résultats seront les annotations .

    Donc ....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Lier une entité avec plusieurs entités
    Par LEF97 dans le forum Symfony
    Réponses: 2
    Dernier message: 21/11/2013, 07h55
  2. [MySQL-5.6] SELECTION DANS UNE TABLE AVEC PLUSIEURS RELATIONS
    Par glodybiss4 dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/10/2013, 12h34
  3. Réponses: 1
    Dernier message: 22/05/2013, 15h01
  4. [EJB3.1] Plusieurs relation OneToOne vers la même entité.
    Par piemur2000 dans le forum Java EE
    Réponses: 1
    Dernier message: 11/01/2011, 09h05
  5. Réponses: 12
    Dernier message: 27/05/2010, 20h01

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