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() 方法并编写自己的实现,它使用 mysql where 而不是 array_filter()。

我不知道你的项目结构和底层数据库架构,所以我能给你的只是指向雄辩文档查询关系(whereHas)的链接。

如果您不知道从哪里开始:查看 ServiceProvider 总是一个好主意(SentryServiceProvider,其中注册了持有 findAllWidthAccess() 方法的 UserProvider)。覆盖 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 回答