我试图找到所有用户w/一个特定的权限列表在哨兵与laravel。问题是Sentry::findAllUsersWithAccess()
返回一个array()
。
正如他们的github存储库中所述,我确定他们的代码是
public function findAllWithAccess($permissions)
{
return array_filter($this->findAll(), function($user) use ($permissions)
{
return $user->hasAccess($permissions);
});
}
现在,它获得所有用户,并过滤出具有权限列表的用户。最大的问题是,当我作为一个开发人员会得到一组用户,它会显示所有的用户,我正在开发一个应用程序,可能持有数千名用户,我只需要得到用户与特定的权限列表。
关于这一点,我想使用一个具有->paginate()
功能的。
有没有想过如何在不获得所有用户的情况下获得它
为什么不重写findAllWithAccess()方法并编写自己的实现,使用mysql where而不是array_filter()。
我不知道你的项目结构和底层的数据库模式,所以我能给你的是链接到雄辩的文档查询关系(whereHas)。
如果你不知道从哪里开始:它总是一个好主意,看看ServiceProvider (SentryServiceProvider,其中UserProvider,它持有findAllWidthAccess()方法,注册)。覆盖registerUserProvider方法并返回您自己的UserProvider实现(使用编辑过的findAllWithAccess()方法)。
希望这会给你指明正确的方向。
在Laravel中,你可以对数组进行手动分页:
$paginator = Paginator::make($items, $totalItems, $perPage);
查看文档:http://laravel.com/docs/pagination