public static function findRoles(User $user)
{
static $cached = [];
if ($ids = array_diff($user->roles, array_keys($cached))) {
$cached += Role::where('id IN (' . implode(',', $user->roles) . ')')->get();
}
return array_intersect_key($cached, array_flip($user->roles));
}