zoukankan      html  css  js  c++  java
  • 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('&nbsp', $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     }
    ╰︶﹉⋛⋋⊱⋋๑๑⋌⊰⋌⋚﹉︶╯
  • 相关阅读:
    windows 远程连接报错
    这30类CSS选择器 你必须记在脑袋里!
    Print to the console in django without UnicodeEncodeErrors
    基于md5的解决js,css缓存问题for django
    Django开发经验
    vscode常用的插件
    点击时添加不同的类
    jQuery 点击空白,隐藏元素
    多功能日历插件:Kalendae
    jQuery中的data()方法
  • 原文地址:https://www.cnblogs.com/zhangcheng001/p/12143585.html
Copyright © 2011-2022 走看看