写了个 Laravel 高效树结构生成的扩展

介绍

高效生成系统树
用于无限级分类

例如:楼中楼评论 获取下级分类等

只会产生一个sql并且速度非常快

支持

仅支持adjacency结构
例如(classify表id(儿子) pid(父亲) )

测试 (只统计生成树使用的时间)

测试

数据量(条) 时间(s) 内存(m)
756 0.022 0.83
5256 0.075 2.84
11256 0.16 5.67
48843 0.883 24.63
108843 1.80 52.42

傻瓜式一次次查询

傻瓜式

查询到1 where pid = 1 
查询到2 where pid = 2 
查询到3 where pid = 3
数据量(条) 时间(s) 内存(m)
146 0.72 2.81
646 3.01 10.84
2646 13.34 42.91

安装

  1. composer require lyxxxh/lartree

查看例子(不使用也可以)

例子

1.在app/config.php的providers添加
  Xxh\LarModel\LarTreeProvider::class
2. php artisan vendor:publish --provider="Xxh\LarModel\LarTreeProvider::class"
3. 导入user 下面附数据库 (我测试的数据库)

600条sql
4w条sql
10w条sql

生成树使用方法(可参考vendor/lyxxxh/lartree/src/LarController.php)

 //引入命名空间
 use Xxh\LarTree\Services\LarTreeServices;
 class LarController extends Controller {

   use LarTree; //使用LarTree
    public function index()
    {
       //设置需要的字段  为了更快速  不设置也可以
       $this->setField(['id','pid','name']);

       //默认是id pid
      // $this->setFatherSonName('子id','父id');

      //设置表 把查询到的所有结果先存到$datas变量
      $this->initTableConainer('users');

      //最开始的父id
      $data = $this->getTableTree(0);

      dd($data);//获取树结构了
    }     

 }

自定义

vendor/lyxxxh/lartree/src/LarTree.php使用trait

根据需求重写里面的所有方法(看源码)

例如获取文章的评论
你完全可以复制代码 然后重写setDataContainer($data)

扩展源码

本作品采用《CC 协议》,转载必须注明作者和本文链接
专心学习不瞎搞
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
87
粉丝
105
喜欢
480
收藏
717
排名:109
访问:8.7 万
私信
所有博文
社区赞助商