千家信息网

怎么彻底删除thinkphp3.1中的标签

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"怎么彻底删除thinkphp3.1中的标签",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么彻底删除thinkphp3.1中的标签
千家信息网最后更新 2026年11月02日怎么彻底删除thinkphp3.1中的标签

这篇文章主要讲解了"怎么彻底删除thinkphp3.1中的标签",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么彻底删除thinkphp3.1中的标签"吧!

thinkphp3.1框架中的案例blog,添加日记的同时可以添加标签tag,但仅此而已。当删除日记时,标签并没有被删除掉,从而造成think_tagged表和think_tag累积了垃圾数据。为了实现删除日记的同时也一起清理掉think_tagged表和think_tag那些过时的数据,我写了一个函数,在看下面函数时,要先弄清think_tagged表、think_tag和think_blog表的关联关系。

函数如下:

复制代码 代码如下:

public function deltag($recordId){

$condition['recordId'] = $recordId;//获取日记的ID

$tagged=M('Tagged');
$taggedlist= $tagged->where($condition)->select();//这里用select而不用find,因为一篇日记可能有多个标签

$taggedids=array();//声明一个数组,用来装think_tagged表的ID

$tagIds=array();//声明一个数组,用来装think_tag表的ID

foreach ($taggedlist as $key => $value) {

$tagIds[]=$value['tagId'];//获取think_tag表的ID

$taggedids[]=$value['id'];//获取think_tagged表的ID
}
//考虑到一篇日记可能有多个标签,所以这里对$tagIds作一下遍历
foreach ($tagIds as $tagIdk => $tagIdv) {

$tagId=$tagIdv;

$tag=D('Tag');

$tagvo=$tag->where('id='.$tagId)->find();//获取每个$tagId对应的一条记录

$count=intval($tagvo['count']);//获取标签的数量

if($count==1){//如果$count==1,说明这个标签仅有这篇日记所有,删掉。

$tag->where('id='.$tagId)->delete();

}elseif($count > 1){//$count > 1,说明这个标签为多篇日记所有,不能删除,所以减1。

$tag->where('id='.$tagId)->setDec('count',1);//setDec使$count减1,注意thinkphp3.1的使用方法。

}
}
//下面是删除日记存在think_tagged表里的相关数据
foreach ($taggedids as $taggedid_k => $taggedid_v) {

$tagged->where('id='.$taggedid_v)->delete();

}
}

函数写好了,怎么使用呢?方法很简单。
我们来看一下删除日记的函数

复制代码 代码如下:

public function delete() {
//删除指定记录
$model = M("Blog");
if (!empty($model)) {
$id = $_REQUEST[$model->getPk()];
if (isset($id)) {

if ($model->where("id=" . $id)->delete()) {
if ($this->__get('ajax')) {
$this->ajaxReturn($id, L('_DELETE_SUCCESS_'), 1);
} else {
$this->success(L('_DELETE_SUCCESS_'));
}
} else {
$this->error(L('_DELETE_FAIL_'));
}
} else {
$this->error(L('_ERROR_ACTION_'));
}
}
}

这个函数是放在Examples\Blog\Lib\Action\PublicAction.class.php这个公共类里的,BlogAction.class.php类继承了其删除函数,我们就把deltag($recordId)函数放在delete() 里调用,如下:

复制代码 代码如下:

public function delete() {
//删除指定记录
$model = M("Blog");
if (!empty($model)) {
$id = $_REQUEST[$model->getPk()];
if (isset($id)) {
$recordId=$id;
$this->deltag($recordId);
if ($model->where("id=" . $id)->delete()) {
if ($this->__get('ajax')) {
$this->ajaxReturn($id, L('_DELETE_SUCCESS_'), 1);
} else {
$this->success(L('_DELETE_SUCCESS_'));
}
} else {
$this->error(L('_DELETE_FAIL_'));
}
} else {
$this->error(L('_ERROR_ACTION_'));
}
}
}

以上只适用删除单条日记的情况,当然如要批量删除日记,只要遍历删除blog的ID同时调用一下deltag($recordId)就OK了。

感谢各位的阅读,以上就是"怎么彻底删除thinkphp3.1中的标签"的内容了,经过本文的学习后,相信大家对怎么彻底删除thinkphp3.1中的标签这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

日记 标签 函数 代码 同时 数据 学习 内容 多个 情况 数组 方法 过时 仅此而已 不用 使用方法 垃圾 就是 思路 数量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 新华互联网科技 朗涯互联网科技 电子科技大学互联网 联恩商钥互联网科技有限公司 佩信高科技互联网 开启互联网科技时代小说 广州优美互联网科技 互联网之后的科技是什么 南平创想时代互联网科技有限公司 武汉健翔互联网络科技有限公司 黑科技闪耀互联网之光 湖南一路畅行互联网科技 知域互联网科技有限公司大骗子 互联网科技与大数据专业 坤平互联网科技 乌鲁木齐新华智原互联网科技学校 上海创道互联网络科技有限公司 上海互联网科技公司ppt 平安好医生打造互联网科技医疗 山东亿川互联网科技有限责任公司 互联网科技产业 互联网通讯科技 涨乐互联网科技 圆梦互联网科技 中资互联网科技 来此购互联网科技有限公司 广州新华互联网科技学校电竞方面 锡山区互联网智能科技产品供应 陕西九四连强互联网科技有限公司 广州智享互联网科技
0