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

Другие вопросы по тегам