Thinkphp3.2 无限级分类删除,单个删除,批量删除
来源:互联网 发布:java中标签的作用 编辑:程序博客网 时间:2024/06/03 05:30
1,单个删除
这时控制器的单个删除方法
public function del(){ $id=I('id'); $pri=D('privilege'); // dump($id); // die; if($pri->delete($id)){ $this->success('删除权限成功',U('lst')); }else{ $this->error('删除权限失败',U('lst')); } }
首先我们想一下,比如a的子类是b,b的子类是c,c的子类是d,那么我们点击一个b的按钮,按道理,cd都要被删除,但是如果只有上面一个函数那么界面里面确实吧,bcd都被删除了,但是数据库里面只有b被删除了,还保留cd,所以这是我们需要另外的方法,_before_delete函数,这个在model层面
public function childid($priid){ $data = $this->select(); // dump($data); // die; return $this->getchildid($data,$priid); } public function getchildid($data,$parentid){ static $ret=array(); foreach($data as $k =>$v){ if($v['parentid']==$parentid){ $ret[]=$v['id']; $this->getchildid($data,$v['id']); } } return $ret; } public function _before_delete($options){ if(is_array($options['where']['id'])){ //if where下面的id是数组的话那么执行的是批量删除,否则是单个删除 // var_dump($options['where']['id'][1]); // die; $arr=explode(',', $options['where']['id'][1]); //把字符串变成数组 // var_dump($arr); // die; $soncates=array(); foreach ($arr as $k => $v) { $soncates2=$this->childid($v); // var_dump($soncates2); // die; $soncates=array_merge($soncates,$soncates2); //合并数组 } $soncates=array_unique($soncates); //移除数组中相同的部分 $childrenids=implode(',', $soncates); // var_dump($childrenids); // die; } else { $childrenids = $this->childid($options['where']['id']); $childrenids = implode(',',$childrenids); // dump($childrenids); // die; } if($childrenids){ $this->execute("delete from cs_privilege where id in($childrenids)"); } }childid和getchildid这两个函数是什么意思是呢,childid是获取被删除的id,getchildid是找出这个id下面的子栏目,也是递归寻找
下面来解释一下_before_delete这个函数,虽然我也有点不理解,这个是在删除之前执行的操作
如果你是单个删除的话打印出来$options,是下图这个样子,id下面是单个数据
如果你是批量删除的话打印出来$options,是下图这个样子,id下面是个数组
这样我们就能理解到底是批量删除还是单个删除了,
if else就能看懂了,implode,是拆分数组,explode是合并数组
$this->execute("delete from cs_privilege where id in($childrenids)");这个是sql语句,我也不是很懂,详情请看http://blog.csdn.net/helin916012530/article/details/39338699就这样删除也就完成了0 0
- Thinkphp3.2 无限级分类删除,单个删除,批量删除
- 无限级分类的删除
- 批量删除+单个删除+全选反选
- php无限分类的删除
- thinkphp3.2 管理员增删改查,批量删除
- 单个删除
- 点击按钮批量删除,单个编辑
- angularjs删除批量删除
- 批量删除
- 批量删除
- 批量删除
- 批量删除
- 批量删除
- 批量删除
- 批量删除
- 批量删除
- 批量删除
- 批量删除
- 树形菜单
- Java数据结构和算法
- 树表格
- Java运行的基本线程解析
- KNN(三)--KD树详解及KD树最近邻算法
- Thinkphp3.2 无限级分类删除,单个删除,批量删除
- Effective-Objective-C学习笔记1-熟悉Objective-C
- 多线程编程部分总结
- JS简洁版下拉树
- <cstdlib> 和 <stdlib.h> 的区别
- js正则判断文本框只能输入0-50
- JDK内部工具详解
- Java NIO学习笔记(上)
- jsp导出数据到excel(小例子)