ThinkPHP 항목 삭제(항목 일괄 삭제 가능)

2718 단어 ThinkPHP삭제코너
얼마 전에 항목 을 삭제 하 는 에 세 이 를 발 표 했 는데 그 당시 에 실 현 된 기능 은 정 보 를 삭제 하 는 것 이 었 는데 이번 에는 항목 을 대량으로 삭제 하 는 것 을 실현 했다.
우리 가 달성 해 야 할 것 은 이런 효과 이다.

일괄 삭제 단 추 를 선택 하면 이 페이지 의 모든 항목 을 선택 할 수 있 습 니 다.이것 은 전단 페이지 의 실현 입 니 다.여기 서 더 이상 말 하지 않 겠 습 니 다.우 리 는 바로 본론 으로 들 어 갑 니 다.일괄 삭제 기능 입 니 다.
1.전단 페이지 에 도 작은 점 이 있 습 니 다.선택 상자 의 name 값 은 그 에 게 id 의 배열 이 고 value 값 은 이 항목 의 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 과 같이 delete 작업 을 직접 할 수 있 습 니 다.

이것 이 바로 우리 dump 에서 options 가 나 온 결과 입 니 다.이것 은 우리 가 삭제 할 때 단일 삭제 인지 대량 삭제 인지 판단 하 는 근거 입 니 다.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 함수 로)를 찾 아$sonpri 2 배열 에 저장 한 다음$sonpri 와$sonpri 2 를 하나의 배열 로 합 쳐 array 를 사용 합 니 다.merge()함수 가 완성 되 었 습 니 다.그래 야 모든 하위 항목 의 id 를 얻 은 셈 입 니 다.그러나 우리 가 얻 은 id 그룹 에는 중복 되 는 id 가 많이 나타 납 니 다.그래서 여기 서 우 리 는 무 거 운 작업 을 해 야 합 니 다.array 를 사용 합 니 다.유 니 크 함수.마지막 으로 배열 의 분 리 를 한 번 더 하고 id 문자열 을 얻 은 다음 에 삭제 하면 큰 성 과 를 거 둘 수 있 습 니 다.
이상 의 ThinkpHP 삭제 프로그램(대량 삭제 프로그램 구현)은 여러분 께 공 유 된 모든 콘 텐 츠 입 니 다.참고 해 주시 고 많은 성원 부 탁 드 리 겠 습 니 다.

좋은 웹페이지 즐겨찾기