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 sur une même table.


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Points : 22
    Points
    22
    Par défaut relation many to many sur une même table.
    Bonjour,
    Je bloque pour faire mon schema yaml.
    Je souhaiterais avoir une table "element"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Element:
      columns:
        id:                  { type: integer, notnull: true, primary: true, unsigned: true, autoincrement: true }
        name:                { type: string(45), notnull: true }
    Cependant un élément peut contenir ou appartenir à N autre(s) élément(s). Je cherche donc à faire une relation n-n sur la même table. (J'espère être clair ).
    Merci pour vos réponses.

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Tu veux une relation hiérarchique dans le style d'un menu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    menu1
      menu11
      menu12
        menu121
        menu122
      menu13
    menu2
      menu21
        menu211
        menu212
      menu22
      ...
    Ou plutôt une relation réflective dans le genre des relations entre les individus et leurs descendants (un individu peut avoir plusieurs enfants (qui sont des individus), un individu a un père et une mère (qui sont des individus)).

    Quel est la structure que tu envisages ?
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Je propose ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Element:
      columns:
        id:                  { type: integer, notnull: true, primary: true, unsigned: true, autoincrement: true }
        name:                { type: string(45), notnull: true }
        parent_id:           { type: integer, notnull: false, unsigned: true }
      relations:
        Element:             { local: parent_id, foreign: id }
    Ça fonctionne mais j'ai un petit souci avec l'admin-generator :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    throw new InvalidArgumentException(sprintf('The "%s" model has to "%s" relation.', $this->getModelName(), $alias));
    Si quelqu'un à une idée...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 18
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par mimi68 Voir le message
    Ou plutôt une relation réflective dans le genre des relations entre les individus et leurs descendants (un individu peut avoir plusieurs enfants (qui sont des individus), un individu a un père et une mère (qui sont des individus)).
    Mon cas correspond plus à cet exemple la.
    Et pour donner un exemple de ce que je tente de faire:
    un élément "cable réseau" est composé de un élément "gaine" et de 8 éléments "fil de cuivre".
    un élément "cable réseau mâle/mâle" est composé d'un élément "cable réseau" et de 2 éléments "connecteurs rj45 mâle".

    Launda j'essaye d'adapter ton code à mon utilisation et jte tiens au courant.

  5. #5
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Cela pourrait donner cela alors :

    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
    26
    27
    28
    29
     
    Element:
      columns:
        name:  
          type: string(45)
          notnull: true
      relations:
        ElementBases:
          class: Element
          refClass: Composants
          foreignAlias: Composants
     
    Composants
      columns:
        element_id: 
          type: integer
          primary: true
        composants_id:
          type: integer
          primary: true
        qte: integer(4)
      relations:
        Element:
          foreignAlias: Composants
        ElementBase:
          class: Element
          local: composants_id
          foreign: id
          foreignAlias: ComposeDesElements
    Attention, ce type de structure n'empêche pas un élément d'être composé de lui même, soit directement, soit indirectement et donc, si on explore l'arborescence des éléments, une boucle infinie.

    Pour un élément, on va retrouver ces composants par ->getComposeDesElements.
    Pour un élément, on va retrouver les éléments enfants (mais pas le nombre) par ->getComposants
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

Discussions similaires

  1. [1.x] Tables ayant deux relations sur une même tables
    Par Legenyes dans le forum Symfony
    Réponses: 1
    Dernier message: 26/08/2011, 11h47
  2. Réponses: 1
    Dernier message: 19/05/2010, 19h31
  3. Relation père / fils sur une même table
    Par useramina dans le forum JPA
    Réponses: 0
    Dernier message: 03/05/2009, 13h44
  4. relation n-n sur une même table
    Par Tanebisse dans le forum MySQL
    Réponses: 6
    Dernier message: 06/11/2008, 09h36
  5. [Mapping] Relation père fils sur une même table.
    Par Invité dans le forum Hibernate
    Réponses: 1
    Dernier message: 11/06/2008, 17h14

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