J'ai dans un projet de site de partage vidéo ces modèles:counterCache de CakePHP
class Video extends AppModel {
var $name = 'Video';
var $hasAndBelongsToMany = array(
'Tag' => array(
'className' => 'Tag',
'joinTable' => 'videos_tags',
'foreignKey' => 'video_id',
'associationForeignKey' => 'tag_id',
'unique' => true,
)
);
}
class Tag extends AppModel {
var $name = 'Tag';
var $hasAndBelongsToMany = array(
'Video' => array(
'className' => 'Video',
'joinTable' => 'videos_tags',
'foreignKey' => 'tag_id',
'associationForeignKey' => 'video_id',
'unique' => true,
)
);
}
class VideosTag extends AppModel {
var $name = 'VideosTag';
var $belongsTo = array(
'Video' => array(
'className' => 'Video',
'foreignKey' => 'video_id',
),
'Tag' => array(
'className' => 'Tag',
'foreignKey' => 'tag_id',
'conditions' => '',
'counterCache' => 'videos_tag_counter'
)
);
}
Le counterCache pour les balises ne fonctionne pas. Je ne sais pas pourquoi et quand j'ai essayé d'ajouter un rappel beforeSave() au modèle videosTag, j'ai trouvé qu'il ne s'exécute pas quand une vidéo est enregistrée (et cette vidéo a des tags et je les trouve dans la base de données videosTags est enregistré?) !!! Quelqu'un peut-il expliquer pourquoi cela se produit?
Comment vous enregistrez les données? Les modèles 'videosTag'' beforeSave' ne seraient déclenchés que si vous enregistrez l'enregistrement en utilisant le modèle 'VideosTag', mais probablement pas via' $ this-> Tag-> saveAll'. – deceze
Je ne sais pas comment cela est sauvegardé parce que cakePHP a généré tout et parce que le modèle vidéo a une relation HABTM avec les tags, les videosTags sont enregistrées. – Ayoub