首页 > 其他分享 >无限级分类

无限级分类

时间:2022-11-18 09:58:10浏览次数:60  
标签:删除 res 分类 无限 result 子类 cateid id

文章原文 : 这里主要做记录
https://www.cnblogs.com/zhangcheng001/p/12143585.html

无限级分类

public static function getList($pid = 0, &$result = [], $blank = 0)
    {
        $res = Db::name('category')->where('pid', $pid)->select();
        // 自定义分类名称前面的提示
        $blank += 2;
        // 遍历分类表
        foreach ($res as $key => $value) {
            // 自定义分类名称的显示格式
            $cate_name = '|--' . $value['name'];
            $value['name'] = str_repeat('&nbsp', $blank) . $cate_name;
            // 将查询到的结果保存到$result中
            $result[] = $value;
            // 将当前记录的id,作为下一级分类的父id,继续递归调用本方法
            self::getList($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('删除失败!');
        }
    }

模型中的方法

// 删除操作  无限级查找子类
    /**
     * Undocumented function
     *
     * @param [type] $cateid    //当前删除的id
     * @param array $result     //静态数组集合
     * @return void
     */
    public static function delnext($cateid, &$result = [])
    {
        // 查询所有数据
        $data = self::select(); //查询所有父id为当前id的子类
        foreach ($data as $v) {
            if ($v['pid'] == $cateid) {
                $result[] = $v['id']; //如果有,将这些数据的id放入数组中
                self::delnext($v['id'], $result); //根据这些数据的id继续调用自身
            }
        }
        return $result;
    }

标签:删除,res,分类,无限,result,子类,cateid,id
From: https://www.cnblogs.com/w-m-y/p/16902183.html

相关文章

  • xhsell下载,xshell免费下载、使用、无限期
    https://www.xshell.com/zh/free-for-home-school/  然后会发邮件过来  对应点击链接即可:(注意,有期限) ......
  • TwoModalBERT进行角色分类
    你是否遇到过数据集中有多个文本特性的情况?例如,根据消息的上下文正确地对消息进行分类,即理解前面的消息。比如说我们有下面的数据集,需要对其进行分类。当只考虑message......
  • 新机器学习遥感分类工具
    ENVI5.6.3新增机器学习工具包,该功能不需要额外的许可,只需安装ENVI深度学习2.0版本应用程序,用ENVI主模块的许可便可使用新机器学习的功能。ENVI新机器学习工具包,可以对栅格......
  • 科技报告数据语料处理(关键词、中图分类名称)
    科技报告语料处理为了建立科技报告的分类模型,现将其关键字和中图分类名称进行汇总,作为原始语料库。先前爬取的数据,存在数据格式不统一不规范的问题,比如分类名称为【数理科学......
  • 【tensorflow2.6】图片数据建模流程:猫狗分类,83.6%识别率
    目标:识别猫和狗一、猫狗数据集数据集下载:公众号,回复:猫狗数据集训练数据集(每一张图片都有dog和cat标签):测试集(图片没有标签):二、训练环境kaggletenslrflow2.6三、数据处理impo......
  • 深度学习-分类准确率度量指标
    1.分类性能度量1.1准确率,分类准确率(accuracy):分类器正确分类的样本数与总样本之比:  accuracy=(Tp+Tn)/(P+N)但难以识别家假阳性与假阴性;以及难以识别正类或......
  • matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类|附代码数据
    全文下载链接:http://tecdat.cn/?p=19751本示例说明如何使用长短期记忆(LSTM)网络对序列数据进行分类。要训练深度神经网络对序列数据进行分类,可以使用LSTM网络。LSTM网络使......
  • 基于粒子群优化深度置信网络的分类预测(matlab)
    1.深度置信网络(DBN)DBN由一层BP神经网络和若干层RBM栈式叠加而成。最顶层的softmax回归层作为标签层输出分类识别的结果,其余层完成特征提取。DBN的学习训练过程......
  • 基于粒子群优化深度置信网络的分类预测
    ​决策树原理        决策树通过把样本实例从根节点排列到某个叶子节点来对其进行分类。树上的每个非叶子节点代表对一个属性取值的测试,其分支就代表测试的每个结......
  • SQL语言分类:DQL、DML、DDL、DCL
    1.数据查询语言DQL(DimensionalQueryLanguage)就是select语句 2.数据操纵语言DML(datamanipulationlanguage)增删改查:SELECT、UPDATE、INSERT、DELETE 3.数据......