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 :

admin generator / relation n:n : table avec 2 foreign keys et un champ en plus


Sujet :

Symfony PHP

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 19
    Points : 18
    Points
    18
    Par défaut admin generator / relation n:n : table avec 2 foreign keys et un champ en plus
    Hello,

    J'utilise l'admin generator pour un projet, mon modèle de données a des relations n:n.
    Il y a une table 'function' et une table 'method', entre les 2 il y a la table 'fct_mpay'.

    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
    57
    58
    59
    60
    61
     
    propel:
      _attributes:
        package: lib.model
      category:
        _attributes: {phpName: DemoCategory, idMethod: native }
        CAT_ID: { type: INTEGER, required: true, autoIncrement: true, primaryKey: true }
        CAT_LABEL: { type: VARCHAR, size: '50' }
        CAT_ORDER: { type: INTEGER }
      fct_mpay:
        FCT_ID: { type: INTEGER, required: true, primaryKey: true, foreignTable: function, foreignReference: FCT_ID, onDelete: CASCADE}
        MPAY_ID: { type: INTEGER, required: true, primaryKey: true, foreignTable: paymentmethod, foreignReference: MPAY_ID, onDelete: CASCADE}
      meth_fld:
        METH_ID: { type: INTEGER, required: true, primaryKey: true, foreignTable: method, foreignReference: METH_ID, onDelete: CASCADE}
        FLD_ID: { type: VARCHAR, size: '50', required: true, primaryKey: true, foreignTable: field, foreignReference: FLD_ID, onDelete: CASCADE}
        METH_FLD_ORDER: { type: INTEGER }
        METH_FLD_REQUIRED: { type: INTEGER }
        METH_FLD_MODIF: { type: INTEGER }
      field:
        _attributes: {phpName: DemoFormField }
        FLD_ID: { type: VARCHAR, size: '50', required: true, primaryKey: true }
        FLD_LABEL: { type: VARCHAR, size: '50' }
        FLD_DESC: { type: VARCHAR, size: '255' }
        FLD_TYPE: { type: VARCHAR, size: '25' }
      function:
        _attributes: {phpName: DemoFunction, idMethod: native }
        FCT_ID: { type: INTEGER, required: true, autoIncrement: true, primaryKey: true }
        CAT_ID: { type: INTEGER, foreignTable: category, foreignReference: CAT_ID }
        METH_ID: { type: INTEGER, foreignTable: method, foreignReference: METH_ID }
        FCT_LABEL: { type: VARCHAR, size: '80' }
        FCT_DESC: { type: VARCHAR, size: '80' }
        FCT_URLDEMO: { type: VARCHAR, size: '255' }
        FCT_URLVIDEO: { type: VARCHAR, size: '255' }
        FCT_ORDER: { type: INTEGER }
      method:
        _attributes: {phpName: DemoMethod, idMethod: native }
        METH_ID: { type: INTEGER, required: true, autoIncrement: true, primaryKey: true }
        METH_LABEL: { type: VARCHAR, size: '25' }
        METH_DESC: { type: VARCHAR, size: '80' }
        METH_URL: { type: VARCHAR, size: '255' }
        METH_POPUP: { type: VARCHAR, size: '255' }
        METH_LOGIN: { type: VARCHAR, size: '50' }
        METH_KEY: { type: VARCHAR, size: '50' }
      paymentmethod:
        _attributes: {phpName: Paymentmethod, idMethod: native }
        MPAY_ID: { type: INTEGER, required: true, autoIncrement: true, primaryKey: true }
        MPAY_LABEL: { type: VARCHAR, size: '40' }
        MPAY_CARDNB: { type: VARCHAR, size: '20' }
        MPAY_LASTNAME: { type: VARCHAR, size: '50' }
        MPAY_FIRSTNAME: { type: VARCHAR, size: '50' }
        MPAY_EXPIR: { type: VARCHAR, size: '4' }
        MPAY_CRYPTO: { type: INTEGER }
        MPAY_BIRTHDATE: { type: VARCHAR, size: '6' }
        MPAY_LOGIN: { type: VARCHAR, size: '50' }
        MPAY_PWD: { type: VARCHAR, size: '25' }
        MPAY_CONTRACTS: { type: VARCHAR, size: '50' }
      value:
        _attributes: {phpName: DemoValue }
        FCT_ID: { type: INTEGER, required: true, primaryKey: true, foreignTable: function, foreignReference: FCT_ID }
        FLD_ID: { type: VARCHAR, size: '50', required: true, primaryKey: true, foreignTable: field, foreignReference: FLD_ID }
        VAL_VAL: { type: VARCHAR, size: '255' }
    Quand j'édite une 'fonction' je veux pouvoir lui associer un moyen de paiement (payment_method).
    J'ai réussi à le faire en utilisant 'admin_check_list' avec le code suivant dans le fichier generator.yml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        edit:
          display: [cat_id, meth_id, fct_id, fct_label, fct_desc, fct_urldemo, fct_urlvideo, fct_order, fct_mpay, value]
          fields:
            fct_mpay:   {name: 'Moyens de paiement', type: admin_check_list, params: through_class=FctMpay }
    Ce code fonctionne parfaitement.

    Maintenant, je voudrais rendre possible l'édition des valeurs des champs (table 'value' ) qui représente également une relation n:n entre la table 'function' et la table 'field' avec le champ supplémentaire 'val_val' qui contient la valeur d'un champ (table field) pour une fonction donnée (table function).

    Par ailleurs, j'ai essayé d'utiliser le mot clé 'onDelete:Cascade' dans schema.yml mais je ne connais pas son utilisation.
    Par exemple, lorsqu'un moyen de paiement (de la table payment_method) est supprimé, la/les lignes correspondantes (avec le même ID) dans 'fct_mpay' doivent être supprimées.

    J'ai cherché sur la doc de propel mais leur site semble inaccessible.

    Merci d'avance pour votre aide,

    Kévin

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 19
    Points : 18
    Points
    18
    Par défaut
    personne ?

    un schema vaut mieux qu'un long discours, en espérant que ça vous aidera à comprendre mon problème :

    Images attachées Images attachées  

Discussions similaires

  1. [AC-2010] Relation entre 2 tables avec conditions ?!
    Par PetitChris dans le forum Modélisation
    Réponses: 4
    Dernier message: 16/05/2014, 18h44
  2. [MySQL] Requete sur des tables avec des Foreign Keys.
    Par bruno7619 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/04/2009, 11h58
  3. [debutant]cree une table avec des foreign key
    Par christopheEU dans le forum Développement
    Réponses: 2
    Dernier message: 02/02/2009, 16h16
  4. Creation de tables avec plusieurs primary key
    Par The eye dans le forum Oracle
    Réponses: 5
    Dernier message: 28/12/2007, 10h05
  5. LOAD DATA INFILE sur table avec AUTO_INCREMENT PRIMARY KEY ?
    Par ctobini dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 30/10/2007, 11h00

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