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 :

Jointure Admin Generator [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web Etudiant
    Inscrit en
    Avril 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 34
    Points : 12
    Points
    12
    Par défaut Jointure Admin Generator
    Bonjour,

    Débutant en sf, je viens de crée mon interface admin.

    Voici mon schema.yml (réduit)


    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
    Element:
      connection: doctrine
      tableName: element
      columns:
        element_id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        page_id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
        element_titre:
          type: string()
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
      relations:
        Element:
          local: element_id
          foreign: element_id
          type: one
    Page:
      connection: doctrine
      tableName: page
      columns:
        page_id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        page_nom:
          type: string()
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
     relations:
        Element:
          local: page_id
          foreign: page_id
          type: many
    J'affiche le contenue de la table Element, jusque là c'est ok, et je veux crée ma jointure pour remplacé page_id par page_nom (dans l'affiche de Element).
    J'ai essayé deux méthodes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    list : 
    peer_method: doSelectJoinAll
    Résultat : apparemment pas prix en compte dans les nouvelles versions... (Your generator configuration contains some errors for the "list" context. The following configuration cannot be parsed: array( 'peer_method' => 'doSelectJoinAll',).) de l'admin. j'ai essayé list : with : Page, mais j'ai mal du m'y prendre...

    Et donc dernier essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          list:
              table_method : getPageNomJoin
     display : [=element_id, page, element_titre]
    et dans ElementTable.class.php
    public function getPageNomJoin(Doctrine_Query $q)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      {
        $rootAlias = $q->getRootAlias();
        $q->leftJoin($rootAlias . '.Page p');
        return $q;
      }
    Résulat : Catchable fatal error: Method Page::__toString() must return a string value

    Vous avez des idées, des choses que j'aurais mal fait ?

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 124
    Points : 150
    Points
    150
    Par défaut
    Ton schéma est faux, en gros, tu as des erreurs dans tes local et foreign, tu as mis une relation en miroir (dans les deux classes) ce qui est inutile et tu t'es trompé de nom dans les relations je pense.

    Doc de doctrine : http://www.doctrine-project.org/proj...rm/1.2/docs/en

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web Etudiant
    Inscrit en
    Avril 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    j'ai fait le schéma sur MySQL Work Bench.

    Jusqu'à là je n'avais pas de problème, et phpmyadmin détecte bien les relations (il me met un lien sur page_id (celui de Element) ou me fait une liste des id lors du update/new).

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 124
    Points : 150
    Points
    150
    Par défaut
    Les générateurs de schéma en YAML ne fonctionne pas bien. Tant que tu n'as pas un existant assez conséquent, commence toujours par crée le fichier YAML et génère la BDD à partir de celui-ci.

  5. #5
    Membre expérimenté 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 : 36
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Si je ne me trompe pas quelqu'un avait déjà fait la remarque que je vais te faire sur un autre forum à savoir : MySQL Work Bench c'est plutôt sympa pour dégrossir et avoir une base, mais rien de tel que son petit cerveau pour faire un schema propre.

    Si j'ai bien compris pour un Element tu n'as qu'une Page donc quand tu te trouves dans le generator.yml de ton Element essaye voir ça tout simplement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    config:
      actions: ~
      fields:  ~
      list:
        display: [ Page, element_titre ]
      filter:  ~
      form:    ~
      edit:    ~
      new:     ~
    Si ton schema est bien construit ça devrait suffire.

    Je te link un tuto plutôt bien expliqué qui explique dans un premier temps comment afficher le nom sur une colonne étrangère dans l'admin gen' plutôt que l'id et si tu veux pousser le bouchon plus loin ça t'explique aussi comment faire la fonction de tri sur cette colonne.

    http://www.elao.org/symfony/symfony-...trangeres.html

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Web Etudiant
    Inscrit en
    Avril 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    merci de ta réponse, mais la bdd doit être mal construite...

    No description for object of class "Page"

    PS : j'ai plusieurs pages.

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 124
    Points : 150
    Points
    150
    Par défaut
    J'aime pas trop faire ça, mais voila comment je vois ton schéma :
    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
    Element:
      connection: doctrine
      tableName: element
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        page_id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
        element_titre:
          type: string()
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
      relations:
        Page:
          local: element_id
          foreign: id
          foreignAlias: Elements
    Page:
      connection: doctrine
      tableName: page
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        page_nom:
          type: string()
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
    Regarde le, comprend le et tu pourra l'utiliser. Un conseil, appel toujours tes clés primaires id.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur Web Etudiant
    Inscrit en
    Avril 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    En fonction d'autre topic, je viens de modif le schéma de la bdd :

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    Element:
      connection: doctrine
      tableName: element
      columns:
        element_id:
          type: integer(4)
          primary: true
          autoincrement: true
        page_id:
          type: integer(4)
          notnull: true
        element_type:
          type: string(255)
          notnull: true
        element_titre:
          type: string()
          notnull: true
        element_maj:
          type: timestamp(25)
          notnull: true
        element_verrou:
          type: integer(4)
          notnull: true
          autoincrement: false
      relations:
        Page:
          local: element_id
          foreign: id
          foreignAlias: Elements
    Image:
      connection: doctrine
      tableName: image
      columns:
        image_id:
          type: integer(4)
          primary: true
          autoincrement: true
        image_type:
          type: string(255)
          notnull: true
        image_title:
          type: string()
          notnull: true
        image_description:
          type: string()
          notnull: true
        image_lien:
          type: string()
          notnull: true
        element_id:
          type: integer(4)
          notnull: true
        image_maj:
          type: timestamp(25)
          notnull: true
      relations:
        Element:
          local: image_id
          foreign: id
          foreignAlias: Images
    Page:
      connection: doctrine
      tableName: page
      columns:
        page_id:
          type: integer(4)
          primary: true
          autoincrement: true
        page_nom:
          type: string()
          notnull: true
        page_lien:
          type: string()
          notnull: true
        page_titre:
          type: string()
          notnull: true
        page_description:
          type: string()
          notnull: true
        page_parent:
          type: integer(4)
          notnull: true
        page_maj:
          type: timestamp(25)
          notnull: true
    Il me reste donc à regénérer model form et filter il me semble.

    Pouvez-vous relire et me dire ce qui ne va pas au schéma ?

  9. #9
    Membre expérimenté 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 : 36
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Citation Envoyé par hugo_dev Voir le message
    merci de ta réponse, mais la bdd doit être mal construite...
    C'est ce qu'il me semblait également.

    Si tu as du one to many tu pourra voir le one dans l'admin gen du many, aussi bien dans la list que le form ou le filter.

    Si tu as du many to many, tu verras des listes de sélection dans le form et le filter.


    (du moins il me semble ... jetez-moi des cailloux si j'me trompe)

    EDIT :
    PS : j'ai plusieurs pages.
    On s'est mal compris ? D'après ton dernier schema tu as une relation Element Page qui est du One to One donc la première ligne de code que je t'ai envoyé devrait suffire

    Sinon, Symfony étant très ... "magique" ça fait pas de mal de temps en temps aller jeter un œil dans les méthodes de ta classe baseXXX que tu devrais trouver dans lib/model/base/BaseElement.class.php ou BasePage.class.php, selon ton IDE, tu auras peut-etre besoin de dérouler les commentaires de haut de page pour voir apparaitre tes méthodes magiques (tous tes accesseurs), et donc savoir ce que tu es en mesure de faire avec ton objet (je dis ça notamment pour les surcharges de widget etc).

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur Web Etudiant
    Inscrit en
    Avril 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    Question avant de regénéré model filtre et form :

    Si je fait sa sans modifier la bdd coté phpmyadmin, sa devrai passé ?

  11. #11
    Membre expérimenté 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 : 36
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Comment ça sans modifier la BDD ?

    Si tu changes ton schema sans faire un rebuild de ton modèle ça ne changera rien du tout.

    Dans l'ordre tu sauvegarde ton nouveau schema, build, si tu as des fixtures tu fais un load-data et tu testes.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Développeur Web Etudiant
    Inscrit en
    Avril 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    je vien de resté avec le nouveaux schéma

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    Element:
      connection: doctrine
      tableName: element
      columns:
        element_id:
          type: integer(4)
          primary: true
          autoincrement: true
        page_id:
          type: integer(4)
          notnull: true
        element_type:
          type: string(255)
          notnull: true
        element_titre:
          type: string()
          notnull: true
        element_texte:
          type: string()
          notnull: true
        element_lien:
          type: string()
          notnull: true
        element_slide_type:
          type: string(100)
          notnull: true
        element_maj:
          type: timestamp(25)
          notnull: true
        element_verrou:
          type: integer(4)
          notnull: true
          autoincrement: false
      relations:
        Page:
          local: element_id
          foreign: element_id
          foreignAlias: Elements
     
    Image:
      connection: doctrine
      tableName: image
      columns:
        image_id:
          type: integer(4)
          primary: true
          autoincrement: true
        image_type:
          type: string(255)
          notnull: true
        image_title:
          type: string()
          notnull: true
        image_description:
          type: string()
          notnull: true
        image_lien:
          type: string()
          notnull: true
        image_redirection:
          type: string(700)
          notnull: true
        element_id:
          type: integer(4)
          notnull: true
        image_maj:
          type: timestamp(25)
          notnull: true
      relations:
        Element:
          local: image_id
          foreign: image_id
          foreignAlias: Images
     
    Page:
      connection: doctrine
      tableName: page
      columns:
        page_id:
          type: integer(4)
          primary: true
          autoincrement: true
        page_nom:
          type: string()
          notnull: true
        page_lien:
          type: string()
          notnull: true
        page_titre:
          type: string()
          notnull: true
        page_description:
          type: string()
          notnull: true
        page_parent:
          type: integer(4)
          notnull: true
        page_maj:
          type: timestamp(25)
          notnull: true
     
    SiteConf:
      connection: doctrine
      tableName: site_conf
      columns:
        conf_id:
          type: integer(4)
          primary: true
          autoincrement: true
        conf_nom:
          type: string(255)
          notnull: true
        conf_valeur:
          type: string(255)
          notnull: true
    Lors du data load, il me dit Unknown record property / related component "element_id" on "Page"


    Si j'utilisel e shcéma suivant, il me dit donne une erreur lors du build
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #schema.yml
    Element
    id:
          type: integer(4)
          primary: true
          autoincrement: true
      relations:
        Page:
          local: element_id
          foreign: id
          foreignAlias: Elements
    des idées ?

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur Web Etudiant
    Inscrit en
    Avril 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    j'ai résolue en mettant en enlevant
    #local: image_id
    #foreign: id

    Voila, merci

  14. #14
    Membre expérimenté 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 : 36
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Dans ton premier schéma tu n'as pas de column element_id dans ta table Page : raison pour laquelle, lors du chargement de tes fixtures, ça te claque dans les doigts.

    Dans ton deuxième schéma, le build du schéma est impossible parce que tu n'as pas de column element_id dans ta table Element pour que ta relation fonctionne (et que tu n'as pas ton mot clé "column" )

    Reprenons calmement : qu'est-ce que tu veux comme relation ? Ta relation entre Element et lui même me parait un peu louche.

    Est-ce qu'un Element a une ou plusieurs Page ? Est-ce qu'une Page a un ou plusieurs Element ? Si tu réponds à ça on peut reprendre sur un schéma propre.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur Web Etudiant
    Inscrit en
    Avril 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    Une page est unique.
    Une page peut avoir plusieurs element

    Un element peut avoir plusieurs image

    Actuellement, je suis arrivé (avec les modifications dans mon denrier post) a faire fonctionné les jointures, avec __toString

    A noté que dans generator.yml, si je met Page (en n'utilisant pas __toString) il me renvoie l'id.

  16. #16
    Membre expérimenté 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 : 36
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Alors ton schéma est faux : si un élément peut avoir plusieurs pages et une page plusieurs élément tu es dans une relation Many to Many est je ne vois aucune table intermédiaire:

    Voilà comment je verrai ton schéma:
    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
    Element:
      columns:
        id:         { type: integer(4), primary: true, autoincrement: true }
      #...tes autres colonnes
      relations:
        Pages:      { class: Page, local: element_id, foreign: page_id, refClass: ElementPage }
     
    Page
      columns:
        id:         { type: integer(4), primary: true, autoincrement: true }
      #...tes autres colonnes
      relations:
        Elements:   { class: Element, local: page_id, foreign: element_id, refClass: ElementPage }
     
    ElementPage
      columns:
        element_id: { type: integer(4), primary: true }
        page_id:    { type: integer(4), primary: true }
      relations:
        Element:    { local: element_id, foreign: id, onDelete: CASCADE }
        Page:       { local: page_id, foreign: id, onDelete: CASCADE }

  17. #17
    Membre à l'essai
    Homme Profil pro
    Développeur Web Etudiant
    Inscrit en
    Avril 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    je viens d'appliquer ton schéma (tu a raison sur les relations, merci !)

    Seulement, lors du chargement des fixtures : Unknown record property / related component "page" on "Element"

    Je vais bien vérifier comment j'ai créer l'architecture :

    J'ai par exemple une page 1 et 2.
    Celle-ci vont contenir différent element (texte, slidder etc).

    Les élements peuvents (certain, pour l'instant que un), être commun aux deux pages. La méthode pour faire sa que j'avais utilisé est juste un model spécifique pour cette élément.

  18. #18
    Membre expérimenté 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 : 36
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Alors maintenant que ton schema tiens la route on va faire des fixtures correctes ! D'ailleurs c'est normal que tes fixtures te claquent dans les doigts puisque le schema a changé.

    On va faire un fichier de fixture par table donc trois fichiers :
    - 010_elements.yml
    - 020_pages.yml
    - 030_elementpage.yml

    Dans le premier tu ne mets que les infos propre à l'Element, pas de clé étrangère (de toute manière tu n'en as pas dans tes colonnes, tout est dans la table intermédiaire), pareille pour la deuxième : que les champs de Page.

    Et dans la dernière tu vas faire tes associations.

    Un exemple de tes fixtures :

    ELEMENT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Element:
      element1:
        #attribut1:  xxx
        #attribut2:  xxx
      element2:
        #attribut1:  xxx
        #attribut2:  xxx
    PAGE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Page:
      page1:
        #attribut1:  xxx
        #attribut2:  xxx
      page2:
        #attribut1:  xxx
        #attribut2:  xxx
      page3:
        #attribut1:  xxx
        #attribut2:  xxx
      page4:
        #attribut1:  xxx
        #attribut2:  xxx
    Et enfin ELEMENTPAGE
    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
    ElementPage:
      ElementPage_1_1:
        Element:  element1
        Page:     page1
      ElementPage_1_2:
        Element:  element1
        Page:     page2
      ElementPage_2_1:
        Element:  element2
        Page:     page1
      ElementPage_2_2:
        Element:  element2
        Page:     page2
      ElementPage_2_3:
        Element:  element2
        Page:     page3
      ElementPage_2_4:
        Element:  element2
        Page:     page4

  19. #19
    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
    Le schéma de Nico_F légèrement rectifié.

    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
    #shema.yml (non testé)
    Element:
      columns:
      # colone Id auto générée
      #...tes autres colonnes
      relations:
        Pages:  
          class: Page
          refClass: ElementPage
          foreignAlias: Elements
     
    Page
      columns:
      # Id auto généré
      #...tes autres colonnes
      # Pas de relation n-n décrite ici, elle l'est dans l'entité Element
     
    ElementPage
      columns:
        element_id: 
          type: integer
          primary: true 
        page_id: 
          type: integer
          primary: true 
      relations:
        Element: 
          foreignAlias: ElementPages
          onDelete: CASCADE
        Page:      
          foreignAlias: ElementPages
          onDelete: CASCADE
    Pas de double déclaration de relation (même pour le lien directe n-n traversant la table de relation (ElementPage)
    Utilises foreignAlias systématiquement pour donner le nom à utiliser de l'autre côté de la relation.
    Laisser doctrine générer l'Id. Il est en integer.
    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 !

  20. #20
    Membre expérimenté 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 : 36
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    En effet Michel, merci pour la correction sur les doubles déclarations de relations (le schéma de mon projet va d'ailleurs prendre un coup de neuf dès lundi).

    Par contre qu'entends-tu par
    Laisser doctrine générer l'Id. Il est en integer.
    Tu ne le déclares pas du tout dans les colonnes ? Doctrine va systématiquement créer un id ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [1.x] Admin generator et jointure ?
    Par symfony30000 dans le forum Symfony
    Réponses: 13
    Dernier message: 07/12/2012, 15h25
  2. [1.x] Admin generator & jointure
    Par Onime Records dans le forum Symfony
    Réponses: 3
    Dernier message: 02/10/2009, 16h53
  3. [1.x] Admin generator - images administrables
    Par wadzat dans le forum Symfony
    Réponses: 3
    Dernier message: 30/05/2008, 15h39
  4. Réponses: 7
    Dernier message: 25/05/2008, 17h06
  5. [1.x] Champs i18n disabled par l'admin generator
    Par wadzat dans le forum Symfony
    Réponses: 1
    Dernier message: 22/05/2008, 14h51

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