热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

彻底删除thinkphp3.1案例blog标签的方法

这篇文章主要介绍了彻底删除thinkphp3.1案例blog标签的方法,以thinkphp3.1框架中的案例blog为基础介绍了删除日记时同步删除tag冗余数据的方法,非常具有实用价值,

这篇文章主要介绍了彻底删除thinkphp3.1案例blog标签的方法,以thinkphp3.1框架中的案例blog为基础介绍了删除日记时同步删除tag冗余数据的方法,非常具有实用价值,

本文实例讲述了彻底删除thinkphp3.1案例blog标签的方法。分享给大家供大家参考。具体方法如下:

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() 里调用,如下:

代码如下:

推荐阅读
  • ASP.NET使用Ajax如何返回Json对象的示例方法介绍
    这篇文章主要介绍了ASP.NET使用Ajax返回Json对象的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下一、 ... [详细]
  • cp.php这四个,那么我们如何根据你访问的URL判断涉及到那些PHP文件和模板文件,方便您的进一步修改!好了,现在我们以最 ... [详细]
  • AJAX 实例解释上面的例子包含一个 HTML 表单,若干个保留所返回数据的 元素,以及指向一段 JavaScript 的链接:*/ ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 故障申报系统php源码,运维不再专业救火 不会PHP照样找出代码性能问题
    作者:凉白开网站:www.ttlsa.com身处互联网的SA(运维)们总感叹自己职业的苦逼,Why?我来告诉你:APP奔溃、 ... [详细]
  • 一、vue-resource1、引入资源方式1)下载vue-resource.js,添加到项目中2)CDN:http:www ... [详细]
  • 【原创】JS上传头像,仿flash
    flash上传头像多不胜举了,可JS仿flash的见的不多,也是工作需要,就试着写写看!不料,设想还真的可行先看效果图(在FF下):下面是我整个的思路:一、用ajaxFileUpload.j ... [详细]
  • 周次学习时间新编写代码行数博客量(篇)学到知识点第一周4h275(行)1(篇)对软件工程这门课程的感性认识软件工程就业分析与思考与及软件工程的定义观看助 ... [详细]
  • java代码packageaction;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.Serv ... [详细]
  • IamcurrentlyworkingonashoppingcartapplicationusingMVC5andhavearequirementtoallowedi ... [详细]
  • 用户体验这点事儿
    2009-02-1518:03byMainz,3366visits,网摘,收藏,编辑用户体验设计最近比较热,从以前的轻视UI到现在不管是桌面软件还是网站都开始关注用户 ... [详细]
  • 前后端数据交互常见问题:JSON parse error: Unrecognized token ‘phoneNum‘
    方法一:前端改成:去掉contentType属性(是对发送过去的数据格式限制),dataType是对接收数据的 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
author-avatar
天使的眼泪174
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有