Suppression récursive de la catégorie de produit
Suppression récursive des catégories de produits
Nous l'avons déjà fait, mais c'est un peu différent La suppression des catégories est plus compliquée. Lorsque nous supprimons la colonne du haut, nous devons également supprimer les catégories en dessous. colonne supérieure.
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('删除栏目失败!'); } }
CateModel model 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); }
Expliquons-le en couches
$childids=$cata->getchild($id);
L'identifiant est transmis à la méthode getchild.
public function getchild($cateid){ $data=$this->select(); return $this->getchildids($data,$cateid); }
La méthode getchild ici interroge toutes les catégories après avoir reçu l'identifiant transmis. Renvoie les données et l'identifiant à la méthode 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();Définissez un tableau. $res[]=$cateid; Le tableau vide est utilisé pour stocker l'identifiant
foreach est utilisé pour parcourir les données. Lorsque son pid est égal à l'identifiant actuel, cela signifie qu'il s'agit du niveau supérieur. l'identifiant est stocké dans le tableau vide $res[] , appelez à nouveau de manière récursive.
return array_unique($res); Eileen renvoie ce tableau, array_unique supprime les doublons.
$childids=implode(',',$childids); Divisez le tableau en chaînes et vous pouvez l'utiliser.
C'est à ce moment-là que vous supprimez les colonnes de niveau supérieur et vous constaterez que vous en avez supprimé plusieurs.