lowcold/closure-laravel

此包的最新版本(dev-master)没有提供许可信息。

dev-master 2022-11-25 09:19 UTC

This package is auto-updated.

Last update: 2024-09-25 13:04:42 UTC


README


开发者:lowcold
邮箱:79240950@qq.com
ps:如果无法安装,请不要使用国内镜像,国内镜像同步时间未知

安装

composer require lowcold/closure-table

修改关联模型

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\SoftDeletes;
use lowcold\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));
# 设置为顶级
```php
Member::find(10)->setRoot();

注意,此处为严重的个人习惯

如果使用了表前缀,请在.env中添加DB_PREFIX=xxxx_

并且将config/database.php中数组的mysql的'prefix' => ''改为'prefix' => env('DB_PREFIX')