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

Symfony PHP Discussion :

Relation many-to-many se pointant elle-même dans un schema YAML


Sujet :

Symfony PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 3
    Par défaut Relation many-to-many se pointant elle-même dans un schema YAML
    Bonjour,

    Je cherche à mettre en place une relation many-to-many qui se pointe elle même par un schema YAML sur l'entité Produit.

    Pour cela j'ai donc mis dans le fichier YAML :
    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
     
    options:
          targetEntity: Produit
          inversedBy: options
          joinTable:
          name: produit_option
          joinColumns:
            produit_id:
              referencedColumnName: id
          inverseJoinColumns:
            option_id:
              referencedColumnName: id
        produits:
          targetEntity: Produit
          mappedBy: options
    Lorsque je génère le fichier entité, tout à l'air correct.
    Mais quand je regarde la base de données, ce n'est pas du tout bon...
    Le nom de la table est : "produit_produit" au lieu de "produit_option".
    Le seul champs présent dans la table est "produit_id" alors qu'il devrait y avoir : "produit_id" et "option_id".

    Quelqu'un saurait-il pourquoi cela ne marche pas ?

    Merci d'avance.

  2. #2
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Salut,

    En pensant strictement objet, je me dit que "option" n'existe pas en tant qu'objet.
    Il s'agit sans doute du même objet (ou presque) mais qu'il s'agisse d'un produit ou d'une option (défini dans une classe à part) c'est mappé sur la table "Produit".

    Je dis peut-être une bêtise c'est juste une piste à creuser, mais à mon avis, toute la partie "option" n'a pas lieu d'être : il faut que tu configure les deux parties de la relation uniquement sur produit.

    Ensuite rien ne t'empêche pour t'y retrouver d'appeler la collection de produit qui va avec un produit : "options". Mais pour le mapping et la BDD je ne chercherais pas à inclure la notion d'option.

    Ensuite il ne reste plus qu'à espérer que Doctrine parvienne lui même à nommer les deux champs de la table de liaison (Produit_Produit : c'est logique) lui même et s'y retrouver avec un produit_id, et produit_id2 par exemple (je ne sais pas du tout comment Doctrine gère ça).

    Mais pour moi, si tu n'as pas de table "option", et que d'un point de vue objet tu vas avoir des produits avec des collection de produits, alors tu ne devrais pas avoir à inclure la notion d'option dans le schéma.

    A+

Discussions similaires

  1. PGSQL-EclipseLink Relation One To Many et Many To One
    Par faitor1 dans le forum Persistance des données
    Réponses: 0
    Dernier message: 30/01/2015, 19h46
  2. Réponses: 9
    Dernier message: 28/12/2011, 12h16
  3. [AC-2002] Chaine qui ne s'équivaut pas à elle-même dans liste déroulante
    Par Nightwing367 dans le forum IHM
    Réponses: 7
    Dernier message: 19/04/2011, 19h14
  4. Réponses: 7
    Dernier message: 07/04/2011, 17h28
  5. Un peu de mal a comprendre le concepte "one-to-many" et "many-to-many"
    Par chriscoolletoubibe dans le forum Hibernate
    Réponses: 4
    Dernier message: 29/03/2007, 18h50

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