|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Nouveau Membre du Club
![]() Étudiant Inscription : août 2006 Messages : 49 ![]() |
Bonjour,
J'ai un formulaire qui rassemble une classe doctrine et ses relations (one-to-many). Au moment du save(), je me retrouve avec un : Code :
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY' Code :
execute : INSERT INTO copisim_etudiant (anonyme, annee, id, fac, email_tmp, updated_at) VALUES (?, ?, ?, ?, ?, ?) - (0, TCEM1, 1, 13, , 2011-01-06) J'ai vérifié avec WebDevelopper, les champs du formulaire sont correctement présents et remplis (notamment l'Id de l'utilisateur). J'ai dû rater un truc mais là je sèche depuis un moment... Le schéma : Code :
Code :
Code :
|
||||||
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() ![]() Vivian PennelDeveloppeur Symfony | JSF/Seam Inscription : août 2004 Messages : 173 ![]() |
Essai d'utiliser $this->useFields(array()); au lieu des unset();
tu met dedans la liste des champs utilisés au lieu de lister ceux que tu ne veux pas. Ca sent la clé pas unset la où il faut. Cette méthode évite généralement les problèmes de clé étrangère. Il faut la mettre dans la classe form parent et celle de l'embedForm également.
__________________
Mon blog : http://blog.developpez.com/vivian-pennel/ |
|
00
|
|
|
#3 |
![]() ![]() Michel RottaResponsable d'exploitation informatique Inscription : septembre 2005 Messages : 4 913 ![]() |
Je vois que tu as un embed normal et un nouveau form qui est aussi en embed.
Personnellement, je ne procèderais pas ainsi. Je pense que c'est là l'origine du problème. Essaye de faire deux form dans ta page, le deuxième pour l'ajout et indépendant du premier au niveau html.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
|
|
00
|
|
|
#4 | ||
|
Nouveau Membre du Club
![]() Étudiant Inscription : août 2006 Messages : 49 ![]() |
Alors, j'ai testé avec $this->useFields(array()); en virant le unset, ça n'a rien changé.
J'ai également testé en introduisant une donnée en relation directement dans la base, et là j'ai eu message d'erreur au niveau de la validation qui disait que le champ inclu par embedRelation(); n'avait rien à faire dans le formulaire... Chaque chose en son temps, et j'ai donc refait un test en virant le useFields(); et le unset();, après tout, c'est une édition, je ne devrais pas faire de bêtises. Là, apparaìt une chose intéressante : le champ CopisimEtudiant.classement apparaît comme un menu déroulant vide. Il faut savoir qu'il y a une relation One-to-one avec la table d'utilisateurs de sfDoctrineGuardPlugin... mais pour laquelle, je ne trouve pas de déclaration (c'est dans ces moment-là qu'on se dit qu'on a dû faire les choses salement : c'est un projet resté en veille faute de temps à y consacrer)... Ceci dit, ça n'explique pas pourquoi il est nul alors que la table mySQL ne l'est pas pour ce champ. Et par ailleurs, une autre classe de formulaire CopisimEtudiantForm fonctionne correctement sur la même table. Pour ce qui est du embedRelation() associé à un embedForm() pour la création d'un nouvel enregistrement, c'est un point sur lequel j'avais trouvé quelques exemples sur le net, et ça ne semblait pas poser problème. Edit : pour statuer là-dessus, j'ai commenté tour à tour, puis simultanément, les deux embed dans la classe de formulaire, avec toujours le même bug. Du coup, je me concentrerais plutôt sur les différence entre les classes CopisimEtudiantForm et CopisimEtudiantChoixForm... CopisimEtudiantForm : Code :
|
||
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Étudiant Inscription : août 2006 Messages : 49 ![]() |
L'erreur était basique, l'erreur était logique : lors de la mise à jour de ma fonction Uptdatechoix($sfWebRequest), j'avais fait une erreur dans la requête Doctrine... Forcément, Symfony ne trouvait pas l'objet, forcément il voulait en insérer un nouveau... Bref. Merci de vos réponses qui m'ont permis de me remettre sur les rails ! ![]() Encore quelques bugs (notamment le doSave) mais je devrais pouvoir m'en sortir. Encore merci ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com