tp5 分类无限级查询和删除
分类添加方法
模型文件中的方法
//创建一个静态方法,获取分类 /** * Undocumented function * * @param integer $pid 当前父ID * @param array $result 引用返回值 * @param integer $blank 设置分类之间的显示提示 就是空格 * @return void */ public static function getCate($pid = 0, &$result = [], $blank = 0) //引用传参 & { $res = self::all(['pid' => $pid]); // 自定义分类名称前面的提示 $blank += 2; // 遍历分类表 foreach ($res as $key => $value) { // 自定义分类名称的显示格式 $cate_name = '|--' . $value->cate_name; $value->cate_name = str_repeat(' ', $blank) . $cate_name; // 将查询到的结果保存到$result中 $result[] = $value; // 将当前记录的id,作为下一级分类的父id,继续递归调用本方法 self::getCate($value->id, $result, $blank); } // 返回查询结果,调用结果集类make方法打包当前结果,转为二维数组返回 return Collection::make($result)->toArray(); }
无限级删除
控制器内的
// 删除 // 在执行del方法之前 先执行delson protected $beforeActionList = [ 'delson' => ['only' => 'del'] ]; // 删除父级 public function del() { $id = input('id'); $res = model('Cate')->where('id', $id)->delete(); if ($res) { $this->success('删除成功!', 'admin/cate/cateList'); } else { $this->error('删除失败!'); } } // 删除下级分类 public function delson() { // 获取当前id $cateid = input('id'); // 判断删除子类 $res = model('Cate')::delnext($cateid); //调用模型中的方法 查找子类 // 将当前删除的id存放到子类id集合中 $res[] = $cateid; // 删除栏目 $result = model('Cate')->destroy($res); if ($result) { $this->success('删除成功!', 'admin/cate/cateList'); } else { $this->error('删除失败!'); } }
模型中的方法
1 // 删除操作 无限级查找子类 2 /** 3 * Undocumented function 4 * 5 * @param [type] $cateid //当前删除的id 6 * @param array $result //静态数组集合 7 * @return void 8 */ 9 public static function delnext($cateid, &$result = []) 10 { 11 // 查询所有数据 12 $data = self::select(); //查询所有父id为当前id的子类 13 foreach ($data as $v) { 14 if ($v['pid'] == $cateid) { 15 $result[] = $v['id']; //如果有,将这些数据的id放入数组中 16 self::delnext($v['id'], $result); //根据这些数据的id继续调用自身 17 } 18 } 19 return $result; 20 }
╰︶﹉⋛⋋⊱⋋๑๑⋌⊰⋌⋚﹉︶╯