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); } }