>  기사  >  백엔드 개발  >  Tp를 사용하여 열 삭제

Tp를 사용하여 열 삭제

炎欲天舞
炎欲天舞원래의
2017-08-04 17:25:381790검색

얼마 전 컬럼 삭제에 대한 에세이를 올렸는데요. 당시 구현된 기능은 정보의 일부를 삭제하는 기능이었습니다. 이번에는 컬럼을 일괄 삭제하겠습니다.

우리가 달성해야 할 것은 다음과 같은 효과입니다.

일괄 삭제 버튼을 선택한 후 페이지의 모든 열을 선택할 수 있습니다. 이것이 바로 프런트 엔드 페이지의 구현입니다. 자세한 내용은 여기서 다루지 말고, 일괄 삭제 기능에 대해 직접 살펴보겠습니다.

1 여기 프런트엔드 페이지에도 작은 점이 있습니다. 즉, 선택 상자의 이름 값에 id 배열이 할당되어야 하고 값 값은 열의 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('未选中任何内容,请重试!');
        }
    }

이는 삭제가 단일 삭제인지 확인하는 데에도 사용됩니다. 삭제 일괄 삭제의 기준입니다. 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 문자열을 얻은 다음 삭제하면 완료됩니다.

위 내용은 Tp를 사용하여 열 삭제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.