Bonjour,
Tout d'abord, j'espère que je poste au bon endroit, puisque ma question touche beaucoup à Doctrine, mais pas uniquement.
Je travaille sur une application qui permet de gérer
- des clubs de sport,
- des catégories d'équipes (D1, D2, etc.)
- et une relation n:n entre les clubs et les catégories d'équipes, correspondant à peu près à des équipes, sachant qu'il peut y avoir plusieurs équipes par catégorie et pour un club.
Pour l'exemple, les tables club et equipe sont composées de 2 champs id et name chacune, et la table equipe contient les champs club_id (clé primaire), categorie_id (clé primaire) et nombre (voir le modèle de données en pièce jointe).
Voici le schema.yml correspondant :
Ça fait quelques jours que je parcours les forums et la documentation de symfony pour comprendre comment valider le formulaire d'ajout d'équipes, et je suis tombé sur cette remarque de Michel Rotta sur les relations n:n avec doctrine :
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 Club: columns: id: { type: integer(4), unsigned: true, primary: true, autoincrement: true } name: { type: string(100), notnull: true, unique: true } Categorie: columns: id: { type: integer(4), unsigned: true, primary: true, autoincrement: true } name: { type: string(100), notnull: true, unique: true } relations: Club: foreignAlias: Categories class: Club refClass: Equipe Equipe: actAs: Sluggable: fields: [ club_id, categorie_id ] columns: club_id: { type: integer(4), unsigned: true, primary: true } categorie_id: { type: integer(4), unsigned: true, primary: true } nombre: { type: integer(2), unsigned: true, default: 1 } relations: Club: foreignAlias: Equipes Categorie: foreignAlias: Equipes
Donc dans mon cas, faut-il que je créée une table equipe avec son propre id et deux relations 0,n vers les tables club et categorie ?La table de jointure ne peut comporter que deux champs, le champs : idLiensnomenclature est en trop. La clefs unique doit être constituée par les deux champs de liaison (on ne peut avoir deux liaisons A1 vers B1... cette liaison doit être unique, d'où la clef).
Un avis, un lien qui m'aurait échappé ?
Merci !
Eric
Partager