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 :
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.
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) |
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 !
Partager