宝哥软件园

ThinkPHP删栏(实现批量删栏)

编辑:宝哥软件园 来源:互联网 时间:2021-09-04

前段时间,我发表了一篇关于删栏的文章。当时我实现了删除一条信息的功能。这次,我想批量删除列。

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

选择批量删除按钮后,您可以选择此页面的所有列。这是前端页面的实现,这里就不多说了。言归正传:批量删除功能。

1.首页这里还有一个小点,就是选择框的name值应该作为id数组赋给他,value值就是列的id。

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

public function priority _ bdel(){ $ ids=I(' ids ');$pri=D('特权');$ids=内爆(',',$ ids);if($ ids){ if($ pri-delete($ ids)){ $ this-success('批量删除列成功!',U(' priority/priority _ lst ');}else{ $this-error('批处理列删除失败,请重试!');} }else{ $this-error('未选择任何内容,请重试!');}}这里传递的id数组要转换成逗号分隔的字符串,比如1、2、3,这样就可以直接执行删除操作了。

这是转储选项的结果,这篇文章也是我们判断删除是单次删除还是批量删除的依据。如果options[where][id]为数组,则表示批量删除,否则为单次删除。

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

public function _ before _ delete($ options){//batch delete if(is _ array($ options[' where '][' id '])){ $ arr=explode(',',$ options[' where '][' id '][1]);$ sonpri=array();foreach($ arr as $ k=$ v){ $ sonpri 2=$ this-child id($ v);$sonpri=array_merge($sonpri,$ sonpri 2);} $ sonpri=array _ unique($ sonpri);$ chirlenids=inter decd(',',$ sonpri);} else {//single delete $ childds=$ this-childid($ options[' where '][' id ']);$ chillenids=inter decd(',',$ chillenids);} if($ chillenids){ $ this-execute(' delete from ed _ privilege,其中id在($ chillenids)');}}这里写批量删除的代码(单次删除之前已经写好了,就不再提了)

将传输的字符串转换成不带逗号的数组并存储在$arr中,创建一个空的$sonpri数组,然后通过foreach遍历它。在这里,首先找出所有的子列id(使用childid函数)并将其存储在$sonpri2的数组中,然后将$sonpri和$sonpri2合并到一个数组中,并使用array_merge()函数完成。通过这种方式,我们可以获得所有子列的id,但是在我们获得的id组中会有很多重复的id,所以这里我们必须执行重复数据删除操作,并使用array_unique()函数。最后,再次拆分数组以获得id字符串,再次删除它,您就完成了。

以上ThinkPHP删除栏(批量删除栏)是边肖分享的全部内容。希望能给大家一个参考,支持我们。

更多资讯
游戏推荐
更多+