save() impossible sur une table en relation n:n
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:
Code:
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 |
Ainsi sous, l'affichage de la page d'une emission, je place ce lien
<a href="<?php echo url_for('emission/mettreEnFavoris?emission='.$emission->getId()) ?>">Mettre en favoris</a>
Le code de mon action mettreEnFavoris est le suivant:
Code:
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();
} |
(NB: Je ne l'ai pas mis ici mais la table ressource est en relation avec d'autres tables emission et article.)
Et quand cette action est appelée, il renvoie l'erreur que voici:
Code:
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`)) |
(Ouais, la table membre aussi hérite de sfGuardUser par aggrégation de colonne)
Alors, quelques idées pour enregistrer les éléments dans ma table favoris ? Merci de votre aide.