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 :

formulaire imbriqué relation n:n table de jointure


Sujet :

Symfony PHP

Vue hybride

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

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Par défaut formulaire imbriqué relation n:n table de jointure
    Bonjour à tous, je souhaite créer des formulaires imbriqués je suis arrivé à en créer sur des tables avec pour relations one to many, mais maintenant je souhaite réaliser des formulaire d'édition pour une relation many to many avec une table de jointure.
    Je suis sur une table produits et je souhaite accéder à la table nomenclature par le biais de la table liensnomenclature
    voici mon schema.yml
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    produit:
      columns:
        idProduit:
          type: integer(4)
          primary: true
          unsigned: true
          notnull: true
          autoincrement: true
        serialNumber:
          type: string(45)
          unique: true
          notnull: true
        dateProd:
          type: timestamp
          notnull: true
     
    liensnomenclature:
      columns:
        idLiensnomenclature:
          type: integer(4)
          primary: true
          unsigned: true
          notnull: true
          default: null
          autoincrement: true
        nomenclature_idNomenclature:
          type: integer(4)
          unsigned: true
          notnull: true
        produit_idProduit:
          type: integer(4)
          unsigned: true
          notnull: true
      relations:
        nomenclaturesIdNomenclature:
          class: nomenclatures
          local: nomenclatures_idNomenclature
          foreign: idNomenclature
          foreignAlias: Liensnomenclatures
        produitIdProduit:
          class: produit
          local: produit_idProduit
          foreign: idProduit
          foreignAlias: liensnomenclatures      
     
    nomenclature:
      columns:
        idNomenclature:
          type: integer(4)
          primary: true
          unsigned: true
          notnull: true
          autoincrement: true
        manomenclature:
          type: clob(65535)
          notnull: true
    je suis sur la table produit et je souhaite éditer un produit avec ces nomenclatures associés

    merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    La table de jointure ne peut comporter que deux champs, le champs : idLiensnomenclature est en trop. La clefs unique doit être constituée par les deux champs de liaison (on ne peut avoir deux liaisons A1 vers B1... cette liaison doit être unique, d'où la clef).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Par défaut
    Effectivement, gros probléme de conception, j'ai effectué les modifications, j'ai bien mes deux clef pour la jointure et j'ai ajouté deux champs created_at et updated_at.

    Maintenant le $this->embedRelation('liensnomenclatures');

    m'affiche juste les champs created_at et updated_at alor que je souhaite afficher le champ de ma nomenclature, comment puis je faire?
    De plus dans le champ <th> de mon formulaire j'ai
    "No description for object of class" au lieu d"un numéro d'enregistrement est ce normal?

    merci pour ton aide

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    Je pense qu'il faut revoir la conception de la base, et la considérer non comme une liaison n-n entre deux tables, avec une table de jointure mais comme trois tables en liaison 1-n et n-1. Et réécrire le shéma dans ce sens.

    Après, il sera toujours temps de voir pour les autres messages, qui pourraient très bien disparaître avec un schéma correcte.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Par défaut
    oui je suis en train de la refaire mais j'ai des petits soucis.
    dans le plugin sfdoctrineguardplugin les tables de jointures ont deux primary key au lieu de deux foreign key il faut utiliser quoi? moi j'ai mit deu primary key voici mon schéma conceptuel actuel en image jointe.

    je suis sur la table produit, je fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->embedRelation('liensnomenclatures');
    dans le form de produit, mais je n'accède pas aux nomenclatures
    Images attachées Images attachées  

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    Les tables qui font des jointures n-n doivent avoir une primary key constitué des deux champs d'où leur usage dans le plugins.

    Dans ta table, il devrait en être de même, tu ne peux avoir deux liens monenclature identique, donc la clefs unique doit être constituée des deux champs de liaison.

    La foringkey, n'a rien à voir au niveau de la descriptions des champs de la table. Quant tu fais une liaison entre deux tables, il ne faut la définir que d'un côté de la table. Mais, il faut bien lui définir aussi la clef utilisé par la table distante, ce qui explique que les relations ne soient pas toujours simple à lire, sans compter que si tu utilises les nom de clefs standard sous doctrine, il va les trouver seul. Ce qui rend parfois les schema.yml difficiles à lire.

Discussions similaires

  1. [2.x] Formulaire imbriqué, relation à travers une table
    Par MrVin100 dans le forum Symfony
    Réponses: 7
    Dernier message: 14/04/2015, 21h50
  2. [AC-2010] Formulaire et relation entre les tables
    Par mickael777 dans le forum IHM
    Réponses: 8
    Dernier message: 03/04/2012, 23h14
  3. [2.x] Formulaire imbriqué à relation multiple
    Par student_php dans le forum Symfony
    Réponses: 4
    Dernier message: 20/12/2011, 12h24
  4. Réponses: 5
    Dernier message: 12/08/2011, 08h59
  5. Requete imbriquée ou join sur table de jointure
    Par elfenlieder dans le forum Requêtes
    Réponses: 7
    Dernier message: 28/11/2007, 11h22

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