Home  >  Article  >  Backend Development  >  ThinkPH implements code sharing for batch deletion of columns

ThinkPH implements code sharing for batch deletion of columns

小云云
小云云Original
2018-02-12 10:39:511435browse

This article mainly shares with you how to implement batch deletion of columns in ThinkPHP for your reference. Let’s follow the editor to take a look, I hope it can help everyone.

What we need to achieve is such an effect:

After selecting the batch delete button, all columns of the page can be selected. This is the implementation of the front-end page. Not much to say here, let’s go directly to the topic: the batch deletion function.

1. There is also a small point here on the front-end page, that is, the name value of the selection box should be assigned an array of ids, and the value value is the id of the column.

2. We write a separate batch deletion method in the controller

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('未选中任何内容,请重试!');
  }
 }

Here we need to convert the passed id array into a comma-separated string such as: 1,2,3 , so that the delete operation can be performed directly.

This is the result of our dump options. This is also the basis for us to judge whether the deletion is a single deletion or a batch deletion. If options[where][id] If it is an array, it means batch deletion is being performed, otherwise it is a single deletion.

3. Modification of the constructor before deletion in the model

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)");
  }
 }

Here we write the code for batch deletion (single deletion has been written before and will not be mentioned again)

Convert the passed string into an array form without commas and store it in $arr. Create an empty array $sonpri, and then traverse it with foreach. Here, first find out all the sub-column IDs (the childid function will be used) and save them. In the $sonpri2 array, merge $sonpri and $sonpri2 into one array, and use the array_merge() function to complete it. In this way, we can obtain the IDs of all sub-columns, but there will be many duplicates in the ID group we obtained. id, so here we also need to perform a duplication operation, using the array_unique() function. Finally, split the array again to get the id string, then delete it and you're done.

Related recommendations:

Use Tp to delete columns

The above is the detailed content of ThinkPH implements code sharing for batch deletion of columns. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn