이 기사에서는 참고용으로 ThinkPHP의 열 일괄 삭제 구현을 주로 공유합니다. 편집자를 따라 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.
우리가 달성해야 할 것은 다음과 같은 효과입니다.
일괄 삭제 버튼을 선택한 후 페이지의 모든 열을 선택할 수 있습니다. 이것은 프런트 엔드 페이지의 구현입니다. 여기에서 일괄 제거된 기능 주제로 직접 이동해 보겠습니다.
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('未选中任何内容,请重试!'); } }
여기서 전달된 id 배열을 1, 2, 3과 같은 쉼표로 구분된 문자열로 변환하여 삭제 작업을 직접 수행할 수 있도록 해야 합니다. .
이것은 삭제가 단일 삭제인지 일괄 삭제인지 판단하는 기준이기도 합니다. 수행되는 작업은 일괄 삭제이고, 그렇지 않으면 개별적으로 삭제됩니다.
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 문자열을 얻은 다음 삭제하면 완료됩니다.
관련 권장 사항:
위 내용은 ThinkPH는 열 일괄 삭제를 위한 코드 공유를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!