public static function getTreeByAdmin($admin_id = -1) { if ($admin_id == -1) { $admin = new SysUser(); $admin->account = 'root'; } else { $admin = SysUser::find($admin_id); if (empty($admin)) { throw new Exception("没有查找到admin数据", 10003); } } if ($admin->account == 'root') { $list = SysMenu::get(); } else { $list = SysMenu::select('sys_menus.*', 'sys_role_menus.r_id AS checked')->join('sys_role_menus', function ($q) { $q->on('sys_menus.id', '=', 'sys_role_menus.m_id'); })->join('sys_user_roles', function ($q) use($admin_id) { $q->on('sys_user_roles.r_id', '=', 'sys_role_menus.r_id')->where('sys_user_roles.admin_id', '=', $admin_id); })->groupBy('sys_menus.id')->get(); } $re = SysMenu::makeTree($list); return $re['tree']; }