0

laravelを使用して、Sentryで特定の権限リストを持つすべてのユーザーを見つけようとしています。問題は、 をSentry::findAllUsersWithAccess()返すことarray()です。

彼らのgithubリポジトリに記載されているように、私は彼らのコードを

public function findAllWithAccess($permissions)
{
    return array_filter($this->findAll(), function($user) use ($permissions)
    {
        return $user->hasAccess($permissions);
    });
}

現在、すべてのユーザーを取得し、権限リストを持つユーザーでフィルター処理しています。大きな問題は、私が開発者としてユーザーのセットを取得すると、すべてのユーザーが表示され、何千人ものユーザーを保持する可能性のあるアプリを開発していて、特定の権限リストを持つユーザーのみを取得する必要がある場合です。

それに関しては、機能のあるものを使用したいと思い->paginate()ます。

すべてのユーザーを取得せずに取得する方法についての考え。

4

2 に答える 2

1

findAllWithAccess() メソッドをオーバーライドして、array_filter() の代わりに mysql where を使用する独自の実装を作成しないでください。

私はあなたのプロジェクト構造と基礎となる db スキーマを知らないので、atm に提供できるのは雄弁なドキュメントQuerying Relations (whereHas) へのリンクだけです。

どこから始めればよいかわからない場合は、ServiceProvider (findAllWidthAccess() メソッドを保持する UserProvider が登録されている SentryServiceProvider) を確認することをお勧めします。registerUserProvider メソッドをオーバーライドし、UserProvider の独自の実装を返します (編集された findAllWithAccess() メソッドを使用)。

それがあなたを正しい方向に向けることを願っています。

于 2014-05-10T08:51:19.620 に答える
0

Laravel では、配列に対して手動でページネーションを行うことができます。

$paginator = Paginator::make($items, $totalItems, $perPage);

ドキュメントを確認してください: http://laravel.com/docs/pagination

于 2014-05-09T21:41:31.547 に答える