/**
  * 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);
}