我在CakePHP上做博客,所以我的数据库中有两个与HABTM相关的表:帖子和标签。因为它们与HABTM相关,所以我也有一个跟踪关系的后期表。
我想在我的tags_controller中有一个删除所有未使用标签的方法。
如何查找与任何帖子无关的所有标记?
答案 0 :(得分:2)
您可以使用以下语句删除所有未使用的标记:
$this->query('delete from tags where not exists (select * from posts_tags where posts_tags.tag_id = tags.id)');
(并找到与任何帖子无关的所有标签,只需将“删除”替换为“select *”)
答案 1 :(得分:0)
$this->Tag->find('all', array(
'conditions' => array(
'PostsTag.id IS NULL'
),
'joins' => array(
array(
'table' => 'poststags',
'alias' => 'PostsTag',
'type' => 'LEFT',
'conditions' => array(
'PostsTag.tag_id' => 'Tag.id',
),
),
),
));