얼마 전 컬럼 삭제에 대한 에세이를 올렸는데요. 당시 구현된 기능은 정보의 일부를 삭제하는 기능이었습니다. 이번에는 컬럼을 일괄 삭제하겠습니다.
우리가 달성해야 할 것은 다음과 같은 효과입니다.
일괄 삭제 버튼을 선택한 후 페이지의 모든 열을 선택할 수 있습니다. 이것이 바로 프런트 엔드 페이지의 구현입니다. 자세한 내용은 여기서 다루지 말고, 일괄 삭제 기능에 대해 직접 살펴보겠습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!