when(!empty($cate_name),function ($query) use($cate_name){ $query->whereLike('cate_name',"%{$cate_name}%"); }) ->when(!empty($pid),function ($query) use($pid){ $query->where('pid',$pid); }) ->order("sort","desc") ->select(); $data = []; foreach ($menus as $item) { $data[] = $item->getData(); } $menuAr = self::getTree($data); return $menuAr; } /** * 获取树型菜单 * @param $data * @param int $pid * @param int $level * @return array */ public static function getTree($data, $pid = 0, $level = 0) { $childs = self::getChild($data, $pid, $level); array_multisort(array_column($childs, 'sort'), SORT_DESC, $childs); foreach ($childs as $key => $navItem) { $resChild = self::getTree($data, $navItem['id']); if (null != $resChild) { $childs[$key]['children'] = $resChild; } } return $childs; } /** * 获取子菜单 * @param $arr * @param $id * @param $lev * @return array */ private static function getChild(&$arr, $id, $lev) { $child = []; foreach ($arr as $k => $value) { if ($value['pid'] == $id) { $value['level'] = $lev; $child[] = $value; } } return $child; } }