|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||||
|
Membre habitué
![]() Vinciane Développeur Web Inscription : novembre 2010 Messages : 66 ![]() |
Hello,
J'essaie de maîtriser un minimum symfony mais je suis bloquée au niveau des embed forms et de l'enregistrement des données quand il s'agit de relations n:n. J'ai une table Jeux, une table Genre et une table JeuxHasGenre (avec comme colonnes: jeux_id_jeux et genre_id_genre) qui permet d'associer un jeu avec ses genres (ou un genre avec les jeux associés). [Première problème résolu]Mon premier problème est que si j'envoie plusieurs genres à la fois pour un jeu, il y a une requête SQL de Doctrine qui m'empêche d'aller plus loin (Select Count* etc. en mettant une clause WHERE id_genre = ? (valeurs envoyées - ids genre). Désireuse d'avancer, je n'envoie qu'un seul genre et bardaf, c'est l'embardée. Enfin, si on préfère, mon formulaire a un formulaire imbriqué concernant les genres. C'est une manière de récupérer l'id du nouveau insert mais voilà, dès qu'on arrive à l'insert dans la table JeuxHasGenre, j'ai donc cet id mais PAS l'id du genre sélectionné dans le formulaire. Pourtant, la fameuse requête SQL de mon premier problème récupère la donnée. J'ai donc l'erreur suivante - je vous mets les logs avec les requêtes: Code :
Code :
Code :
Code :
Merci d'avance Vic EDIT: Etant donné que mon premier problème est résolu, je donne ici la solution. Mais le deuxième est toujours en train de me donner des maux de tête. Code :
|
||||||||||
|
00
|
|
|
#2 | ||
|
Membre chevronné
![]() Développeur Web Inscription : mars 2005 Messages : 767 ![]() |
Je ne sais pas quel est le deuxième problème mais une cause fréquente de bugs est un schema.yml mal déclaré. Comme le signalait Michel Rotta dans un autre fil, il vaut mieux construire le fichier schema.yml proprement et créer la base à partir de là (avec la tâche doctrine:build) plutôt que de créer la base de données et en extraire le fichier .yml avec un build-schema.
Dans ton cas, tu as une relation n-n et Doctrine prévoit une manière bien plus simple de déclarer cela que ce que je vois dans ton fichier : Relations n-n dans le fichier schema.yml Il y a un cas d'application dans le tutoriel Jobeet, à consulter impérativement. En simplifiant ton schema (je conserve une colonne par table pour alléger la présentation), cela donnerait quelque chose du style : Code :
- colonne id déclaré implicitement si aucune autre primary_key n'est déclarée - clé étrangère sur une table MaTable : ma_table_id Avec ça et éventuellement l'utilisation d'embedRelations() dans ton formulaire, ça devrait aller mieux. Voir cet autre tuto pour les détails : http://www.symfony-project.org/more-...ymfony/1_4/en/ |
||
|
|
10
|
|
|
#3 | ||
|
Membre habitué
![]() Vinciane Développeur Web Inscription : novembre 2010 Messages : 66 ![]() |
En fait, j'ai déjà fait Jobeet mais j'ai plus appris avec mon projet test qu'en suivant le tuto. Et j'ai déjà consulté la doc sur les formulaires avancés mais bon, peut-être qu'en changeant le schema, ça marchera.
Je vais changer cela maintenant et tester l'embed relation... après la pause midi ![]() EDIT: Merci pour le renseignement sur les relations doctrine, non seulement, ca m'a permis de mieux comprendre cette partie-là mais en plus, c'était bien un problème de ce côté-là. Voici pour ceux que cela intéresse mon schema (en fait, j'ai recommencé un nouveau projet mais les tables ont les mêmes relations) - les ids étant mis pour respecter ce que j'ai vu sur Doctrine et sur Jobeet après réexamen du schema.yml. Code :
|
||
|
00
|
Copyright © 2000-2012 - www.developpez.com