order(['sort' => 'asc', 'create_time' => 'asc'])->select(); return $this->buildMenuTree($accessList ? $accessList->toArray() : []); } /** * 构建菜单树结构 * @param array $data 权限数据 * @param int $parentId 父级ID * @return array */ private function buildMenuTree($data, $parentId = 0) { $tree = []; foreach ($data as $item) { if ($item['parent_id'] == $parentId) { $item['children'] = $this->buildMenuTree($data, $item['access_id']); $tree[] = $item; } } return $tree; } /** * 获取面包屑导航 * @param string $path 当前路径 * @return array */ public function getBreadcrumb($path) { $accessModel = new Access(); $current = $accessModel->where('path', '=', $path)->find(); if (!$current) { return []; } $breadcrumb = [$current]; $parentId = $current['parent_id']; while ($parentId > 0) { $parent = $accessModel->where('access_id', '=', $parentId)->find(); if (!$parent) { break; } array_unshift($breadcrumb, $parent); $parentId = $parent['parent_id']; } return $breadcrumb; } }