Sentry & Laravel, получение пользователей в группе. изменение findAllUsers с доступом к нумерации страниц
Я пытаюсь найти всех пользователей с определенным списком разрешений в Sentry с помощью laravel. Проблема в том, что Sentry::findAllUsersWithAccess()
возвращает array()
,
как указано в их репозитории GitHub я определил их код, чтобы быть
public function findAllWithAccess($permissions)
{
return array_filter($this->findAll(), function($user) use ($permissions)
{
return $user->hasAccess($permissions);
});
}
прямо сейчас он получает всех пользователей и фильтрует их пользователями со списком разрешений. большая проблема будет, когда я, как разработчик, получу набор пользователей, он покажет ВСЕХ пользователей, я разрабатываю приложение, которое может содержать тысячи пользователей, и мне нужно только получить пользователей с отдельными списками разрешений.
Что касается того, что хотел бы использовать один с ->paginate()
возможность.
Любые мысли, как получить его, не получив все пользователи.
2 ответа
Почему бы вам не переопределить метод findAllWithAccess() и написать свою собственную реализацию, которая использует mysql where вместо array_filter().
Я не знаю структуру вашего проекта и базовую схему БД, поэтому все, что я могу вам дать - это ссылка на красноречивую документацию Querying Relations (whereHas).
Если вы не знаете, с чего начать: всегда полезно взглянуть на ServiceProvider (SentryServiceProvider, где зарегистрирован UserProvider, содержащий метод findAllWidthAccess ()). Переопределите метод registerUserProvider и верните собственную реализацию UserProvider (с отредактированным методом findAllWithAccess()).
Надеюсь, что это укажет вам правильное направление.
В Laravel вы можете делать нумерацию страниц вручную на массивах:
$paginator = Paginator::make($items, $totalItems, $perPage);
Проверьте документы: http://laravel.com/docs/pagination