이 글은 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 그룹에서 중복을 제거하려면 array_unique() 함수를 사용하십시오. 마지막으로 배열을 다시 분할하여 ID 문자열을 얻은 다음 삭제하면 완료됩니다.
관련 권장 사항:
위 내용은 열 일괄 삭제를 구현하는 ThinkPHP 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!