Bonjour à tous,

Je viens de me lancer dans un nouveau projet qui présente pour moi une nouveauté.

Une de mes tables (Ressource) possède plusieurs relations n-n vers une deuxième table (Individu).
Chacun de ces relations représente un rôle particulier de l'individu par rapport à la ressource. J'ai autant de tables d'association que de relations, et je les ai nommées par le nom du rôle qu'elles représente (Auteur, Contributeur, Contact).
Je "pointe" toutes ces associations vers la table Individu car bien souvent une instance d'Individu peut aussi bien être Auteur, Contributeur et/ou Contact.

Le schéma YML ci-dessous me semblait correct ainsi que les fixatures. A la création de la base et à l'importation du jeu de données, je n'ai eu aucun problème. J'ai vérifié la base générée via phpmyadmin et ça m'a semblé correct.

Le problème c'est lorsque, dans un template par exemple, j'écris un truc du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
echo $ressource->getAuteurs();
J'obtiens alors une belle erreur 500 avec comme message :
500 | Internal Server Error | Doctrine_Record_UnknownPropertyException
Unknown record property / related component "Auteurs" on "Ressource"
J'ai eu le premier réflexe d'aller voir la classe BaseRessource, et la méthode ::getAuteurs() a bien été générée.

Je n'ai ce problème qu'avec ce type de relations. Les relations n-n avec un seul rôle (une seule association) ne posent pas ce problème.

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
Ressource:
  tableName:  ressource
  actAs:
    Timestampable:  ~
    SoftDelete:   ~
    UserTraceable: ~
    Sluggable:
      fields:       [nom]
      unique:       true
  columns:
 
  # La liste des champs étant longue et inutile ici, je vous l'épargne
 
  relations:
     Contributeurs:
       foreignAlias:  Ressources
       class: Individu
       refClass:  Contributeur
     Auteurs:
       foreignAlias:  Ressources
       class: Individu
       refClass:  Auteur
     Contacts:
       foreignAlias:  Ressources
       class: Individu
       refClass: Contact
 
 
 
Auteur:
  tableName:  auteur
  actAs:
    Timestampable:  ~
    UserTraceable: ~
    SoftDelete:   ~
  columns:
    ressource_id:
      type:     integer
      primary:  true
    individu_id:
      type:     integer
      primary:  true
  relations:
    Ressource:
      onDelete: CASCADE
      foreignAlias: Auteurs
    Individu:
      onDelete: CASCADE
      foreignAlias: Auteurs
 
 
Individu:
  tableName:  individu
  actAs:
    Timestampable:  ~
    UserTraceable: ~
    SoftDelete:   ~
    Sluggable:
      fields:   [nom]
      unique:   true
  columns:
    nom:
      type:     string(50)
      notnull:  true
    prenom:
      type:     string(50)
    fonction:
      type:     string(20)
    email:
      type:     string(255)
    telephone:
      type:     string(10)
    fax:
      type:     string(10)
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
Ressource:
    nom:              "Formation développement durable"
    Themes:           [theme08]
    SousThemes:       [sstheme01]
    duree:            14
    Localisation:     Localisation03
    public_cible:     Formateurs et acteurs Distance Zéro
    descriptif:       "Présentation du développement durable (historique, concept), enjeux et stratégies, applications au quotidien"
    Tags:             [Tag03,Tag04]
    objectif:         "Eveiller les consciences individuelles et prendre en compte le développement durable dans la vie privée et professionnelle"
    Auteurs:     [Individu01, Individu02]
    Contributeurs:       [Individu03]
    Contacts:      [Individu02]
    ModalitesPedagogiques: [Modalite02]
    is_eligible:      true
    Contact:          Individu11
    Niveau:           Niveau02
 
Individu:
  Individu01:
    nom:    *****
    prenom: *****
  Individu02:
    nom:    *****
    prenom: *****
  Individu03:
    nom:    *****
    prenom: *****
Je ne sait pas vraiment d'où vient ce problème, et je voudrais déjà savoir si mon schéma est bon pour ce genre de relations, avant de chercher le problème ailleurs.

Merci d'avance !