제품 카테고리 재귀 삭제
이전에도 해봤지만 조금 다릅니다. 상단 열을 삭제할 때 아래 카테고리도 삭제해야 합니다. 상단 열. cate 컨트롤러 controll public function del($id){
$cata=D('cate');
$childids=$cata->getchild($id);
$childids=implode(',',$childids);
if($cata->delete($childids)){
$this->success('删除栏目成功!',U('index'));
}else{
$this->error('删除栏目失败!');
}
}
catemodel 모델 layer public function getchild($cateid){
$data=$this->select();
return $this->getchildids($data,$cateid);
}
public function getchildids($data,$cateid){
static $res=array();
$res[]=$cateid;
foreach ($data as $k => $v) {
if ($v['pid']==$cateid) {
$res[]=$v['id'];
$this->getchildids($data,$v['id']);
}
}
return array_unique($res);
}
let 's with rayers
public function getchild($cateid){ $data=$this->select(); return $this->getchildids($data,$cateid); }여기서 getchild 메소드는 전달된 ID를 받은 후 모든 카테고리를 쿼리합니다. getchildids 메소드에 데이터와 ID를 반환합니다.
public function getchildids($data,$cateid){ static $res=array(); $res[]=$cateid; foreach ($data as $k => $v) { if ($v['pid']==$cateid) { $res[]=$v['id']; $this->getchildids($data,$v['id']); } } return array_unique($res); }$res=array();배열을 정의합니다. $res[]=$cateid; 빈 배열은 ID를 저장하는 데 사용됩니다. foreach는 데이터를 탐색합니다. pid가 현재 ID와 같으면 해당 ID가 최상위임을 의미합니다. 빈 배열 $res[] 에 저장하고 재귀적으로 다시 호출하세요.
return array_unique($res); Eileen은 이 배열을 반환하고 array_unique는 중복 항목을 제거합니다.
$childids=implode(',',$childids); 배열을 문자열로 분할하여 사용할 수 있습니다.
최상위 열을 삭제하면 여러 열이 삭제된 것을 확인할 수 있습니다.
다음 섹션