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 삭제 프로그램(대량 삭제 프로그램 구현)은 여러분 께 공 유 된 모든 콘 텐 츠 입 니 다.참고 해 주시 고 많은 성원 부 탁 드 리 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ThinkPHP의 도메인 간 공유 세션한동안 의 연구 를 거쳐 마침내 돌파구 를 이루었다 두 웹 사이트: think.local think2.local 주요 원리는 다음과 같습니다. 1、think에서 통과.local 실행 js 스크립트,think2.loc...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.