kertag / 闭包表
dev-main
2022-10-20 03:53 UTC
This package is auto-updated.
Last update: 2024-09-20 08:05:36 UTC
README
开发者:kertag
邮箱:66644934@qq.com
ps: 如果无法安装,请勿使用国内镜像,国内镜像同步时间未知
安装
composer require kertag/closure-table
修改关联模型
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\SoftDeletes; use Kertag\ClosureTable\ClosureTable; class Member { use ClosureTable, SoftDeletes, HasFactory; // 定义上级字段 const parent = 'parent'; // 定义关联表 const closure = 'member_closure'; }
获取数据方法示例
<?php $member = Member::find(3); // 获取所有后代 $member->getDescendants()->get()->toArray(); // 获取所有后代,包括自己 $member->getDescendantsAndOwn()->get()->toArray(); // 获取所有祖先 $member->getAncestor()->get()->toArray(); // 获取所有祖先,包括自己 $member->getAncestorAndOwn()->get()->toArray(); // 使用排序 $member->getDescendants()->orderBy('member_closure.distance','desc')->get()->toArray();
移动
// 把10移动到5 Member::find(10)->move(Member::find(5));
设置为顶级
Member::find(10)->setRoot();
注意,此处为严重的个人习惯
如果使用了表前缀,请在.env
中添加DB_PREFIX=xxxx_
并且将config/database.php
中的数组mysql的'prefix' => ''
改为'prefix' => env('DB_PREFIX')