2009-09-20 46 views
1

我在CakePHP中做博客,所以我在我的数据库中有两个与HABTM相关的表:帖子和标签。因为他们是HABTM相关的我也有关系的poststags表保持跟踪。如何获取所有CakePHP中没有帖子关联的标签

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

如何找到不与任何职位相关联的所有标签?

+0

您好Mr. anderstornvig, 您能否引导我如何设法添加与帖子相关的多个标签。我正在尝试实现相同的功能,但无法正确执行。 谢谢。 – 2009-10-20 07:08:32

回答

2

您可以使用下面的语句删除所有未使用的标签:

$this->query('delete from tags where not exists (select * from posts_tags where posts_tags.tag_id = tags.id)');

(并找到不与任何职位相关联的所有标签只需更换“删除”和“选择*”)

+0

谢谢你,它的工作原理。我还是愿意接受更多的“CakePHP的风格”的回答,虽然。 – anderstornvig 2009-09-20 19:28:33

+0

伟大的查询,谢谢! – kicaj 2013-08-20 15:24:14

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

));

相关问题