Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/05/2011, 16h19   #1
Invité régulier
 
Homme Hugo Gresse
Développeur Web Etudiant
Inscription : avril 2011
Messages : 34
Détails du profil
Informations personnelles :
Nom : Homme Hugo Gresse
Localisation : France

Informations professionnelles :
Activité : Développeur Web Etudiant

Informations forums :
Inscription : avril 2011
Messages : 34
Points : 5
Points : 5
Envoyer un message via Skype™ à hugo_dev
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 :
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 :
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 :
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 :
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 ?
hugo_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 16h27   #2
Membre habitué
 
Homme Ludovic
Étudiant
Inscription : janvier 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Ludovic
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 124
Points : 140
Points : 140
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
PeytaWodka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 16h39   #3
Invité régulier
 
Homme Hugo Gresse
Développeur Web Etudiant
Inscription : avril 2011
Messages : 34
Détails du profil
Informations personnelles :
Nom : Homme Hugo Gresse
Localisation : France

Informations professionnelles :
Activité : Développeur Web Etudiant

Informations forums :
Inscription : avril 2011
Messages : 34
Points : 5
Points : 5
Envoyer un message via Skype™ à hugo_dev
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).
hugo_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 16h54   #4
Membre habitué
 
Homme Ludovic
Étudiant
Inscription : janvier 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Ludovic
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 124
Points : 140
Points : 140
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.
PeytaWodka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 17h08   #5
Membre habitué
 
Avatar de Nico_F
 
Homme Nicolas
Développeur Web
Inscription : avril 2011
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Âge : 24
Localisation : France

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

Informations forums :
Inscription : avril 2011
Messages : 95
Points : 142
Points : 142
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 :
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
Nico_F est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/05/2011, 17h13   #6
Invité régulier
 
Homme Hugo Gresse
Développeur Web Etudiant
Inscription : avril 2011
Messages : 34
Détails du profil
Informations personnelles :
Nom : Homme Hugo Gresse
Localisation : France

Informations professionnelles :
Activité : Développeur Web Etudiant

Informations forums :
Inscription : avril 2011
Messages : 34
Points : 5
Points : 5
Envoyer un message via Skype™ à hugo_dev
merci de ta réponse, mais la bdd doit être mal construite...

No description for object of class "Page"

PS : j'ai plusieurs pages.
hugo_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 17h31   #7
Membre habitué
 
Homme Ludovic
Étudiant
Inscription : janvier 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Ludovic
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 124
Points : 140
Points : 140
J'aime pas trop faire ça, mais voila comment je vois ton schéma :
Code :
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.
PeytaWodka est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 05/05/2011, 17h33   #8
Invité régulier
 
Homme Hugo Gresse
Développeur Web Etudiant
Inscription : avril 2011
Messages : 34
Détails du profil
Informations personnelles :
Nom : Homme Hugo Gresse
Localisation : France

Informations professionnelles :
Activité : Développeur Web Etudiant

Informations forums :
Inscription : avril 2011
Messages : 34
Points : 5
Points : 5
Envoyer un message via Skype™ à hugo_dev
En fonction d'autre topic, je viens de modif le schéma de la bdd :

Code :
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 ?
hugo_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 17h35   #9
Membre habitué
 
Avatar de Nico_F
 
Homme Nicolas
Développeur Web
Inscription : avril 2011
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Âge : 24
Localisation : France

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

Informations forums :
Inscription : avril 2011
Messages : 95
Points : 142
Points : 142
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 :
Citation:
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).
Nico_F est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 17h42   #10
Invité régulier
 
Homme Hugo Gresse
Développeur Web Etudiant
Inscription : avril 2011
Messages : 34
Détails du profil
Informations personnelles :
Nom : Homme Hugo Gresse
Localisation : France

Informations professionnelles :
Activité : Développeur Web Etudiant

Informations forums :
Inscription : avril 2011
Messages : 34
Points : 5
Points : 5
Envoyer un message via Skype™ à hugo_dev
Question avant de regénéré model filtre et form :

Si je fait sa sans modifier la bdd coté phpmyadmin, sa devrai passé ?
hugo_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 17h47   #11
Membre habitué
 
Avatar de Nico_F
 
Homme Nicolas
Développeur Web
Inscription : avril 2011
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Âge : 24
Localisation : France

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

Informations forums :
Inscription : avril 2011
Messages : 95
Points : 142
Points : 142
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.
Nico_F est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 09h37   #12
Invité régulier
 
Homme Hugo Gresse
Développeur Web Etudiant
Inscription : avril 2011
Messages : 34
Détails du profil
Informations personnelles :
Nom : Homme Hugo Gresse
Localisation : France

Informations professionnelles :
Activité : Développeur Web Etudiant

Informations forums :
Inscription : avril 2011
Messages : 34
Points : 5
Points : 5
Envoyer un message via Skype™ à hugo_dev
je vien de resté avec le nouveaux schéma

Code :
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 :
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 ?
hugo_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 10h16   #13
Invité régulier
 
Homme Hugo Gresse
Développeur Web Etudiant
Inscription : avril 2011
Messages : 34
Détails du profil
Informations personnelles :
Nom : Homme Hugo Gresse
Localisation : France

Informations professionnelles :
Activité : Développeur Web Etudiant

Informations forums :
Inscription : avril 2011
Messages : 34
Points : 5
Points : 5
Envoyer un message via Skype™ à hugo_dev
j'ai résolue en mettant en enlevant
#local: image_id
#foreign: id

Voila, merci
hugo_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 10h30   #14
Membre habitué
 
Avatar de Nico_F
 
Homme Nicolas
Développeur Web
Inscription : avril 2011
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Âge : 24
Localisation : France

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

Informations forums :
Inscription : avril 2011
Messages : 95
Points : 142
Points : 142
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.
Nico_F est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 10h34   #15
Invité régulier
 
Homme Hugo Gresse
Développeur Web Etudiant
Inscription : avril 2011
Messages : 34
Détails du profil
Informations personnelles :
Nom : Homme Hugo Gresse
Localisation : France

Informations professionnelles :
Activité : Développeur Web Etudiant

Informations forums :
Inscription : avril 2011
Messages : 34
Points : 5
Points : 5
Envoyer un message via Skype™ à hugo_dev
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.
hugo_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 10h49   #16
Membre habitué
 
Avatar de Nico_F
 
Homme Nicolas
Développeur Web
Inscription : avril 2011
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Âge : 24
Localisation : France

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

Informations forums :
Inscription : avril 2011
Messages : 95
Points : 142
Points : 142
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 :
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 }
Nico_F est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 11h05   #17
Invité régulier
 
Homme Hugo Gresse
Développeur Web Etudiant
Inscription : avril 2011
Messages : 34
Détails du profil
Informations personnelles :
Nom : Homme Hugo Gresse
Localisation : France

Informations professionnelles :
Activité : Développeur Web Etudiant

Informations forums :
Inscription : avril 2011
Messages : 34
Points : 5
Points : 5
Envoyer un message via Skype™ à hugo_dev
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.
hugo_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 12h20   #18
Membre habitué
 
Avatar de Nico_F
 
Homme Nicolas
Développeur Web
Inscription : avril 2011
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Âge : 24
Localisation : France

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

Informations forums :
Inscription : avril 2011
Messages : 95
Points : 142
Points : 142
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 :
1
2
3
4
5
6
7
Element:
  element1:
    #attribut1:  xxx
    #attribut2:  xxx
  element2:
    #attribut1:  xxx
    #attribut2:  xxx
PAGE
Code :
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 :
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
Nico_F est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 10h09   #19
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Le schéma de Nico_F légèrement rectifié.

Code :
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 12h12   #20
Membre habitué
 
Avatar de Nico_F
 
Homme Nicolas
Développeur Web
Inscription : avril 2011
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Âge : 24
Localisation : France

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

Informations forums :
Inscription : avril 2011
Messages : 95
Points : 142
Points : 142
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
Citation:
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 ?
Nico_F est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h54.


 
 
 
 
Partenaires

Hébergement Web