Как получить все теги, которые НЕ имеют сообщений, связанных в CakePHP - PullRequest
1 голос
/ 20 сентября 2009

Я веду блог в CakePHP, поэтому в моей базе данных есть две таблицы, связанные с HABTM: записи и теги. Поскольку они связаны с HABTM, у меня также есть таблица posttags, отслеживающая отношения.

Я хотел бы иметь метод в моем tags_controller, который удалит все неиспользуемые теги.

Как найти все теги, которые НЕ связаны ни с какими сообщениями?

Ответы [ 2 ]

2 голосов
/ 20 сентября 2009

Вы можете использовать следующую инструкцию для удаления всех неиспользуемых тегов:

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

(И чтобы найти все теги, не связанные с какими-либо сообщениями, просто замените «удалить» на «выбрать *»)

0 голосов
/ 22 сентября 2009
$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',
        ),
    ),
),

));

...