41 lines
		
	
	
		
			969 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			969 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace app\admin\model;
 | |
| 
 | |
| use think\Model;
 | |
| 
 | |
| class AdminSysMenu extends Model
 | |
| {
 | |
|     /**
 | |
|      * 获取菜单树形结构
 | |
|      * @return array
 | |
|      */
 | |
|     public static function getMenuTree()
 | |
|     {
 | |
|         // 获取所有启用的菜单
 | |
|         $menus = self::where('status', 1)
 | |
|             ->order('type', 'asc')
 | |
|             ->order('sort', 'desc')
 | |
|             ->select()
 | |
|             ->toArray();
 | |
| 
 | |
|         $menuTree = [];
 | |
| 
 | |
|         // 先处理所有父菜单
 | |
|         foreach ($menus as $menu) {
 | |
|             if ($menu['parent_id'] == 0) {
 | |
|                 $menuTree[$menu['smid']] = $menu;
 | |
|                 $menuTree[$menu['smid']]['children'] = [];
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         // 再处理子菜单
 | |
|         foreach ($menus as $menu) {
 | |
|             if ($menu['parent_id'] != 0 && isset($menuTree[$menu['parent_id']])) {
 | |
|                 $menuTree[$menu['parent_id']]['children'][] = $menu;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         return array_values($menuTree);
 | |
|     }
 | |
| }
 |