如何获得没有在CakePHP中关联的帖子的所有标签

时间:2009-09-20 12:44:33

标签: cakephp find has-and-belongs-to-many

我在CakePHP上做博客,所以我的数据库中有两个与HABTM相关的表:帖子和标签。因为它们与HABTM相关,所以我也有一个跟踪关系的后期表。

我想在我的tags_controller中有一个删除所有未使用标签的方法。

如何查找与任何帖子无关的所有标记?

2 个答案:

答案 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',
        ),
    ),
),

));