资讯专栏INFORMATION COLUMN

获取三级以上分类

dinfer / 2311人阅读

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


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

</>复制代码

  1. 数据库:

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

</>复制代码

  1. Model:

</>复制代码

  1. //获取三级分类
  2. public function getTree() {
  3. $fields = "demand_id,demand_name,parent_id,sort,status";
  4. $result = Db::name("demand_class")->field($fields)->where(array("parent_id" => 0, "status" => "Y"))->order("parent_id asc, sort asc")->select();
  5. if (!$result)
  6. return false;
  7. $rs = array();
  8. //顶级不显示图片 ,二级不显示
  9. foreach ($result as $v) {
  10. $cate_id = $v["demand_id"];
  11. $rs[$cate_id]["cate_id"] = $v["demand_id"];
  12. $rs[$cate_id]["cate_name"] = $v["demand_name"];
  13. $data = $this->_son_cate($v);
  14. if ($data) {
  15. foreach ($data as $key => $val) {
  16. // if (!isset($val["child"]))
  17. // continue; //是否有字分类
  18. //去除二级中图片
  19. //unset($val["url"]);
  20. $rs[$cate_id]["chilid"][] = $val;
  21. }
  22. }
  23. }
  24. foreach ($rs as $vv) {
  25. $info[] = $vv;
  26. }
  27. return $info;
  28. }

</>复制代码

  1. private function _son_cate($pcate_info) {
  2. $pcate_id = $pcate_info["demand_id"];
  3. $fields = "demand_id,demand_name,parent_id,sort,status";
  4. $result = Db::name("demand_class")->field($fields)->where(array("parent_id" => $pcate_id))->order("parent_id asc,sort asc")->select();
  5. if (!$result)
  6. return false;
  7. foreach ($result as $v) {
  8. $cate_id = $v["demand_id"];
  9. $rs[$cate_id]["cate_id"] = $v["demand_id"];
  10. $rs[$cate_id]["cate_name"] = $v["demand_name"];
  11. $data = $this->_son_cate($v);
  12. if ($data) {
  13. foreach ($data as $value) {
  14. if (!is_file(BASE_UPLOAD_PATH . "/" . ATTACH_COMMON . "/category-pic-" . $value["cate_id"] . ".jpg")) {
  15. $value["image"] = PHONE_TEMPLATES . "/" . images . "/" . "default_goods_image.gif";
  16. } else {
  17. $value["image"] = UPLOAD_SITE_URL . "/" . ATTACH_COMMON . "/category-pic-" . $value["cate_id"] . ".jpg";
  18. }
  19. // $value["url"] = htmlspecialchars_decode($value["gc_link"]);
  20. $rs[$cate_id]["child"][] = $value;
  21. }
  22. }
  23. }
  24. return $rs;
  25. }

</>复制代码

  1. Contraller:

</>复制代码

  1. public function edit() {
  2. //分类
  3. $md_goods_class = Model("demand_class");
  4. $denamd_class = $md_goods_class->getTree();
  5. $this->assign("denamd_class", $denamd_class);
  6. return $this->fetch("demand_from");
  7. }

</>复制代码

  1. 前端 demand_from.html

</>复制代码

</>复制代码

  1. 我之前遇到的问题:

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

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

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

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

相关文章

  • 获取三级以上分类

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

    yearsj 评论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条评论

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