123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- <?php
- namespace App\Services;
- use App\Models\SiteMenu;
- class MenuService
- {
- /**
- * 获取多级菜单
- *
- * @return array
- */
- public function getMultiLevelMenu(int $menu_location=0,int $dist_id = 0): array
- {
- // 一次性加载所有菜单项
- $menus = SiteMenu::where('show', 1) // 只显示状态为 1 的菜单
- ->where('dist_id', $dist_id)
- ->where('menu_location', $menu_location)
- ->orderBy('order', 'asc')
- ->get();
- // 构造多级菜单
- return $this->buildMenuTree($menus);
- }
- /**
- * 递归构造菜单树
- *
- * @param \Illuminate\Database\Eloquent\Collection $menus
- * @param int $parentId
- * @return array
- */
- private function buildMenuTree($menus, $parentId = 0): array
- {
- $menuTree = [];
- foreach ($menus as $menu) {
- if ($menu->parent_id == $parentId) {
- $menu->children = $this->buildMenuTree($menus, $menu->id);
- $menuTree[] = $menu->toArray();
- }
- }
- return $menuTree;
- }
- }
|