php tp3.2删除多条,ThinkPHP实现批量删除栏目的方法

本篇文章主要介绍ThinkPHP实现批量删除栏目的方法,感兴趣的朋友参考下,希望对大家有所帮助。

我们需要达到的是这样一个效果:

4e2ebb613f9a4f77efa4ff75ec92f368.png

选中批量删除按钮后可以选中所有该页面的栏目,这个是前端页面的实现,在这里就不多说了,我们直接进入正题:批量删除的功能。

1.前端页面这里也有一个小小的点,就是选择框的name值应给给他赋值为一个id的数组,value值为该栏目的id。

2.我们在控制器中单独写一个批量删除的方法

public function privilege_bdel(){

$ids = I('ids');

$pri = D('privilege');

$ids = implode(',', $ids);

if($ids){

if($pri->delete($ids)){

$this->success('批量删除栏目成功!',U('Privilege/privilege_lst'));

}else{

$this->error('批量删除栏目失败,请重试!');

}

}else{

$this->error('未选中任何内容,请重试!');

}

}

这里要将传过来的id数组转化为以逗号分隔的字符串如:1,2,3,这样可以直接进行delete操作。

2de6f6e019d50a44e8f78510ceb865b0.png

这就是我们dump出来options的结果,这条也是我们用来判断删除时是单个删除还是批量删除的依据,如果options[where][id]是一个数组的话,则说明进行的是批量删除,否则就是单个删除。

3.在模型中对删除前构造函数的修改

public function _before_delete($options){

//批量删除

if(is_array($options['where']['id'])){

$arr = explode(',', $options['where']['id'][1]);

$sonpri = array();

foreach ($arr as $k => $v) {

$sonpri2 = $this->childid($v);

$sonpri = array_merge($sonpri,$sonpri2);

}

$sonpri = array_unique($sonpri);

$chilrenids = implode(',', $sonpri);

}else{//单个删除

$chilrenids =$this->childid($options['where']['id']);

$chilrenids = implode(',', $chilrenids);

}

if($chilrenids){

$this->execute("delete from ed_privilege where id in($chilrenids)");

}

}

在这里我们写出批量删除的代码(单个删除之前已经写过,不再提)

将传过来的字符串转化为不带逗号的数组形式存在$arr中,建立一个空数组$sonpri,然后foreach遍历,这里先查找出所有的子栏目id(会用childid函数),存入$sonpri2数组中 ,再将$sonpri和$sonpri2合并为一个数组,使用array_merge()函数完成,这样我们才算是获取到了所有子栏目的id,但是我们所获取的id组中,会出现许多重复的id,所以这里我们还要进行去重的操作,使用array_unique()函数。最后再进行一次数组的拆分,得到id字符串,再进行删除就大功告成了。

相关推荐:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值