我正在尝试使用laravel在Sentry中找到具有特定权限列表的所有用户。问题是Sentry::findAllUsersWithAccess()
会返回array()
。
如他们的github存储库中所述,我确定他们的代码是
public function findAllWithAccess($permissions)
{
return array_filter($this->findAll(), function($user) use ($permissions)
{
return $user->hasAccess($permissions);
});
}
现在,它获取所有用户并使用具有权限列表的用户过滤掉它。最大的问题是,当我作为开发人员获得用户集时,它会显示所有用户,我正在开发一个可能容纳数千个用户的应用程序,我只需要获得具有特定权限列表的用户。
关于这一点,我们喜欢使用具有->paginate()
能力的人。
任何想法如何在不让所有用户获得的情况下获得它。
答案 0 :(得分:1)
为什么不重写findAllWithAccess()方法并编写自己的实现,它使用mysql而不是array_filter()。
我不知道你的项目结构和底层的数据库模式,所以我能给你的所有内容都是指向雄辩文档Querying Relations(whereHas)的链接。
如果您不知道从哪里开始:最好查看ServiceProvider(SentryServiceProvider,其中注册了持有findAllWidthAccess()方法的UserProvider)。覆盖registerUserProvider方法并返回您自己的UserProvider实现(使用已编辑的findAllWithAccess()方法)。
希望能指出正确的方向。
答案 1 :(得分:0)
在Laravel中,您可以在阵列上手动进行分页:
$paginator = Paginator::make($items, $totalItems, $perPage);