2009-09-20 5 views
1

Je fais un blog dans CakePHP, donc j'ai deux tables dans ma base de données qui sont liées à HABTM: les posts et les tags. Parce qu'ils sont liés à HABTM, j'ai aussi une table poststags qui suit les relations.Comment obtenir tous les tags qui n'ont pas de messages associés dans CakePHP

Je voudrais avoir une méthode dans mes tags_controller qui va supprimer toutes les balises inutilisées.

Comment trouver toutes les balises qui ne sont associées à aucun article?

+0

Bonjour anderstornvig, Pouvez-vous me guider comment vous avez réussi à ajouter plusieurs tags liés à un article? J'essaye d'accomplir la même fonctionnalité mais ne pourrais pas le faire correctement. merci. –

Répondre

2

Vous pouvez utiliser l'instruction suivante pour supprimer tous les tags inutilisés:

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

(Et pour trouver tous les tags ne sont pas associés à des messages remplacer simplement le « supprimer » avec « select * »)

+0

Merci, cela fonctionne. Je suis toujours prêt à accepter une réponse plus "style cakephp". – anderstornvig

+0

Grande requête, merci! – kicaj

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

));

Questions connexes