资讯专栏INFORMATION COLUMN

获取三级以上分类

yearsj / 1114人阅读

摘要:当你在数据库中存储了三级以上的数据树时,你想把它显示在前端时,你会怎么做,下面是我在工作项目时遇到的一些思路此项目是开发的。注文章来源雨中笑记录实习期遇到的问题与心得,转载请申明原文

当你在数据库中存储了三级以上的数据树时,你想把它显示在前端时,你会怎么做,下面是我在工作项目时遇到的一些思路(此项目是thinkphp5开发的)。

数据库:

demand_id是各分类的ID值,parent_id是用来做树的分类,第一级的parent_id的值是 0 ,第二级的parent_id值是其父级的demand_id值,第三级的parent_id值是其第二级父级的demand_id值,第四、第五同样往后推...

Model:
 //获取三级分类
    public function getTree() {
        $fields = "demand_id,demand_name,parent_id,sort,status";
        $result = Db::name("demand_class")->field($fields)->where(array("parent_id" => 0, "status" => "Y"))->order("parent_id asc, sort asc")->select();
        if (!$result)
            return false;
        $rs = array();
        //顶级不显示图片 ,二级不显示
        foreach ($result as $v) {
            $cate_id = $v["demand_id"];
            $rs[$cate_id]["cate_id"] = $v["demand_id"];
            $rs[$cate_id]["cate_name"] = $v["demand_name"];
            $data = $this->_son_cate($v);

            if ($data) {
                foreach ($data as $key => $val) {
                    // if (!isset($val["child"]))
                    // continue; //是否有字分类
//去除二级中图片
                    //unset($val["url"]);
                    $rs[$cate_id]["chilid"][] = $val;
                }
            }
        }
        foreach ($rs as $vv) {
            $info[] = $vv;
        }
        return $info;
    }
private function _son_cate($pcate_info) {
        $pcate_id = $pcate_info["demand_id"];
        $fields = "demand_id,demand_name,parent_id,sort,status";
        $result = Db::name("demand_class")->field($fields)->where(array("parent_id" => $pcate_id))->order("parent_id asc,sort asc")->select();
        if (!$result)
            return false;
        foreach ($result as $v) {
            $cate_id = $v["demand_id"];
            $rs[$cate_id]["cate_id"] = $v["demand_id"];
            $rs[$cate_id]["cate_name"] = $v["demand_name"];

            $data = $this->_son_cate($v);
            if ($data) {
                foreach ($data as $value) {
                    if (!is_file(BASE_UPLOAD_PATH . "/" . ATTACH_COMMON . "/category-pic-" . $value["cate_id"] . ".jpg")) {
                        $value["image"] = PHONE_TEMPLATES . "/" . images . "/" . "default_goods_image.gif";
                    } else {
                        $value["image"] = UPLOAD_SITE_URL . "/" . ATTACH_COMMON . "/category-pic-" . $value["cate_id"] . ".jpg";
                    }
                    // $value["url"]       = htmlspecialchars_decode($value["gc_link"]);
                    $rs[$cate_id]["child"][] = $value;
                }
            }
        }
        return $rs;
    }
Contraller:
    public function edit() {
     
        //分类
        $md_goods_class = Model("demand_class");
        $denamd_class = $md_goods_class->getTree();
        $this->assign("denamd_class", $denamd_class);
        return $this->fetch("demand_from");
    }
前端 demand_from.html
 
我之前遇到的问题:

当我在前端看的时候发现cate_id 这个字段,我去它的控制器中查找,找到了它使用的demand_class数据表,然后去数据表里看发现表里并没有这个字段,通过我认真的查找我发现这个字段是从模型Model中定义来的。

注:文章来源雨中笑记录实习期遇到的问题与心得,转载请申明原文

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97255.html

相关文章

  • 获取三级以上分类

    摘要:当你在数据库中存储了三级以上的数据树时,你想把它显示在前端时,你会怎么做,下面是我在工作项目时遇到的一些思路此项目是开发的。注文章来源雨中笑记录实习期遇到的问题与心得,转载请申明原文 当你在数据库中存储了三级以上的数据树时,你想把它显示在前端时,你会怎么做,下面是我在工作项目时遇到的一些思路(此项目是thinkphp5开发的)。 数据库: showImg(https://segmen...

    dinfer 评论0 收藏0
  • 获取三级以上分类

    摘要:当你在数据库中存储了三级以上的数据树时,你想把它显示在前端时,你会怎么做,下面是我在工作项目时遇到的一些思路此项目是开发的。注文章来源雨中笑记录实习期遇到的问题与心得,转载请申明原文 当你在数据库中存储了三级以上的数据树时,你想把它显示在前端时,你会怎么做,下面是我在工作项目时遇到的一些思路(此项目是thinkphp5开发的)。 数据库: showImg(https://segmen...

    JouyPub 评论0 收藏0
  • 动态数据的表格页面展示

    摘要:而由于没有后端的数据支持,所有的数据都在表格中展示,所以需要将表格中的数据转为数据,再通过读取,然后用模板引擎渲染到页面上。 showImg(https://segmentfault.com/img/bV3N8M?w=1574&h=692);如图所示,是一个动态的表格,内容数量不定第一层分类是专业大类的分类,第二层分类的国家的分类,第三层分类是具体专业名的分类(就是不同的色块栏),甚至...

    joywek 评论0 收藏0
  • 动态数据的表格页面展示

    摘要:而由于没有后端的数据支持,所有的数据都在表格中展示,所以需要将表格中的数据转为数据,再通过读取,然后用模板引擎渲染到页面上。 showImg(https://segmentfault.com/img/bV3N8M?w=1574&h=692);如图所示,是一个动态的表格,内容数量不定第一层分类是专业大类的分类,第二层分类的国家的分类,第三层分类是具体专业名的分类(就是不同的色块栏),甚至...

    selfimpr 评论0 收藏0

发表评论

0条评论

yearsj

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<