专栏首页PHPer技术栈Laravel 框架实现无限极分类
原创

Laravel 框架实现无限极分类

近开发商品功能,在尝试递归和引用方式后,蓦然回首,突然发现 laravel 框架有更简单高效的实现方式,无限极分类最佳实践,open code 与大家共享!感兴趣的 Mark 一下,谢谢~

表结构如下:

CREATE TABLE `goods_category` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `name` varchar(500) DEFAULT '' COMMENT '分类名称',
  `pid` int(5) unsigned DEFAULT '0' COMMENT '父级id',
  `level` tinyint(3) unsigned DEFAULT '1' COMMENT '分类等级',
  `status` tinyint(3) unsigned DEFAULT '0' COMMENT '分类状态:0-禁用,1-正常',
  `created_at` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  `updated_at` timestamp NULL DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `status` (`status`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8mb4 COMMENT='商品分类表';

数据存储格式:

    // 模型文件
    public function children() {
        return $this->hasMany(get_class($this), 'pid' ,'id');
    }

    public function allChildren() {
        return $this->children()->with( 'allChildren' );
    }
    // 控制器
    $list = GoodsCategory::with('allChildren')->first();
    dd($list);

处理后数据:

至此,laravel 框架无限极分类实现完毕,相比递归和引用实现无限极分类的两种方式,是不是简单高效很多呢,关于更多 laravel 特性,欢迎评论区留言探讨。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微信小程序模板消息实现(PHP+ 小程序)

    参考官方文档和部分资料,总结小程序模板消息推送以及相关注意事项,楼主踩过的坑,特来与大家分享。

    ITer.996
  • PHP7.+系列新特性和新变更

    组合比较符号用于比较两个表达式。当$a小于、等于或大于$b时它分别返回-1、0或1,比较规则延续常规比较规则。对象不能进行比较

    ITer.996
  • 简述TCP的三次握手过程

    对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭

    ITer.996
  • 微服务入门之SpringCloud(视频文案)

    微服务架构风格是一种将单个应用程序作为一套小型服务开发的方法,每种应用程序都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。 这些服务是...

    Java猫说
  • 值得纪念的日子:镭速RaySync FTP关键传输指标超越国际标杆Aspera产品

    2018年3月19日对大部分人来说是一个普通的日子,但是对于我来说,是一个人生中值得纪念的日子。

    云语科技
  • Xshell系列软件被植入后门,请尽快更新到最新版本

    Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET协议。Xshell 通过互联网...

    FB客服
  • UML之类图

    单向关联:A需要知道B,B不需要知道A 双向关联:A需要知道B,B也需要知道A

    城市中的游牧民族
  • 你见过基于纯开源的超融合(HCI)么?

    前言: 本文是基于笔者个人的实践,不代表任何官方的观点。 超融合的概念,近两年确认非常火。实际上,超融合架构起初是受到 Google、Faceb...

    魏新宇
  • 浮点数据有损压缩算法 附完整C代码

    思路比较简单,就是做一个2D颜色映射表进行插值实现,一般是512*512*3 的颜色表,

    cpuimage
  • 一个简单的案例,理解threejs中几个基本概念

    种种原因吧,需要在和大伙分享Elasticsearch的间隙,也来分享一下threejs的一些用法。有一个小小愿望,希望这个threejs教程最终也能成一个系列...

    江南一点雨

扫码关注云+社区

领取腾讯云代金券