Ma Table ressources contient toutes les ressources de mon site, et pour permettre aux utilisateurs de les mettre en favoris (sur le site), la table ressource est en relation n:n avec la table membre avec pour intermédiaire la table favoris. Schéma:
Ainsi sous, l'affichage de la page d'une emission, je place ce lien
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 membre: columns: username: type: string(255) notnull: true unique: true password: type: string(255) notnull: true relations: ressource: local: ressource_id foreign: membre_id refClass: favoris onDelete: cascade ressources: columns: ... titre: type: string(255) nature: type: enum values: ['1','2'] relations: membre: local: membre_id foreign: ressource_id refClass: favoris onDelete: cascade favoris: columns: ressource_id: type: integer primary: true membre_id: type: integer primary: true
<a href="<?php echo url_for('emission/mettreEnFavoris?emission='.$emission->getId()) ?>">Mettre en favoris</a>
Le code de mon action mettreEnFavoris est le suivant:
(NB: Je ne l'ai pas mis ici mais la table ressource est en relation avec d'autres tables emission et article.)
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 public function executeMettreEnFavoris(sfWebRequest $request) { $this->forward404Unless($request->getParameter('emission')); $fav = new favoris(); $this->res = Doctrine::getTable('ressources')->findOneByEmissionId($request->getParameter('emission')); $this->resId = $this->res->getId(); $fav->setRessourceId($this->resId); $fav->setMembreId(1); $fav->save(); }
Et quand cette action est appelée, il renvoie l'erreur que voici:
(Ouais, la table membre aussi hérite de sfGuardUser par aggrégation de colonne)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`nortb`.`favoris`, CONSTRAINT `favoris_ressource_id_sf_guard_user_id` FOREIGN KEY (`ressource_id`) REFERENCES `sf_guard_user` (`id`))
Alors, quelques idées pour enregistrer les éléments dans ma table favoris ? Merci de votre aide.
Partager