Ben bir video paylaşım sitesi projesinde bu modelleri var:
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'
)
);
}
Etiketleri için counterCache çalışmıyor. Nedenini bilmiyorum ve ben videosTag modeline BeforeSave () geri arama eklemek için çalıştım ben bir video kaydedilir olsun zaman çalıştırmak değildir (ve bu video etiketleri sahip olduğunu buldu ve ben veritabanı yani nasıl ilişki onları bulmak videosTags kaydedilir?)! bu neden oluyor herhangi bir vücut açıklayabilir.