PHP结合TP5实现无限分类

首先建表:

CREATE TABLE `category` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `category_name` varchar(10) NOT NULL,
 `pid` int(11) NOT NULL,
 `level` int(11) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4

插入如下数据:

原理概要:

首级分类默认是pid为0,pid 是父ID的意思,其实分类就是爸爸找儿子,儿子找爸爸这么回事儿。

比如上面的,(注意英文我是随便写的,都是错的,没必要在意)

id字段就是代表父亲,pid代表儿子属于哪个父亲,看上图pid等于1的,在找到id等于1的clothes,也就是说clothes有两个儿子

废话少说,直接上代码

class Category
    {
        public function getCate()
        {
            $data = CA::all();
            $results = $this->returnFc($data);
            return $results;
        }

        public function returnFc($data,$pid=0)
        {
            $tree = array();
            foreach($data as $k => $v)
            {
                if($v['pid'] == $pid)
                {        //父亲找到儿子
                    $v['child'] = $this->returnFc($data, $v['id']);
                    $tree[] = $v;
                }
            }
            return $tree;
        }
    }

以上代码中的CA是一个Category模型,也就是开头的那个表了,用命名空间引入即可。

我习惯定义路由,跑前后分离,所以我用postman来测试了一下,如下图:

这个层次感,可以满足业务需求了,这是ID为1的,一共有3级,至于 你想要多少级,你在添加分类 的时候只需要把父亲指定就行了。

发布了45 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_36431166/article/details/100665441
今日推荐