PermissionType::class, ]; public function children(): HasMany { return $this->hasMany(self::class, 'parent_id'); } public function roles(): BelongsToMany { return $this->belongsToMany(Role::class, 'role_permission'); } /** * 获取权限树 */ public static function tree(): array { $all = self::orderBy('sort')->get()->toArray(); return self::buildTree($all); } private static function buildTree(array $items, int $parentId = 0): array { $tree = []; foreach ($items as $item) { if ($item['parent_id'] == $parentId) { $children = self::buildTree($items, $item['id']); if ($children) { $item['children'] = $children; } $tree[] = $item; } } return $tree; } }