/** * Delete posts related tags by post ID * @param int|array $post_id * @return bool */ public function deletePost($post_id) { $tag_ids = array_keys($this->getByField('post_id', $post_id, 'tag_id')); if (!$this->deleteByField('post_id', $post_id)) { return false; } if ($tag_ids) { $delete_tag_ids = array_keys($this->query("\n SELECT t.id, COUNT(pt.tag_id) cnt FROM `blog_tag` t \n LEFT JOIN `blog_post_tag` pt ON t.id = pt.tag_id\n WHERE t.id IN(" . implode(',', $tag_ids) . ")\n GROUP BY t.id\n HAVING cnt = 0")->fetchAll('id')); if ($delete_tag_ids) { $tag_model = new blogTagPluginModel(); $tag_model->deleteById($delete_tag_ids); } } return true; }
<?php $model = new blogTagPluginModel(); $ids = array_keys($model->query("\n SELECT t.id, COUNT(pt.tag_id) cnt FROM `blog_tag` t \n LEFT JOIN `blog_post_tag` pt ON t.id = pt.tag_id\n GROUP BY t.id\n HAVING cnt = 0\n ")->fetchAll('id')); if ($ids) { $model->deleteById($ids); }