Pemadaman rekursif kategori produk
Pemadaman berulang kategori produk
#🎜, tetapi Kami telah melakukannya sebelum ini #Dele adalah beberapa Secara berbeza, pemadaman kategori adalah lebih rumit Apabila kami memadamkan lajur peringkat atas, kami juga harus memadamkan kategori di bawah lajur peringkat atas.
cate controller
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('删除栏目失败!'); } }#🎜##🎜🎜🎜🎜 #Lapisan model CatModel
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);
}
Mari kita terangkan secara berlapis$childids=$cata->getchild($id) ; 🎜#
public function getchild($cateid){ $data=$this->select(); return $this->getchildids($data,$cateid); }Di sini kaedah getchild menanyakan semua kategori selepas menerima id yang diluluskan. Kembalikan data dan id kepada kaedah getchildids.
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();Tentukan tatasusunan. $res[]=$cateid; Tatasusunan kosong digunakan untuk menyimpan id
foreach merentasi data apabila pidnya sama dengan id semasa, ia bermakna ia adalah yang teratas level. Pada masa ini, simpan id Masukkan tatasusunan kosong $res[] dan panggil semula secara rekursif.
return array_unique($res);
$childids=implode(',',$childids Pisahkan tatasusunan kepada rentetan dan anda boleh menggunakannya.
Ini adalah apabila anda memadamkan lajur atas dan anda akan mendapati anda telah memadamkan berbilang lajur.