哨兵& Laravel,让用户进入群组。更改find​​AllUsersWithAccess以进行分页

时间:2014-05-09 21:33:31

标签: laravel-4 bigdata cartalyst-sentry

我正在尝试使用laravel在Sentry中找到具有特定权限列表的所有用户。问题是Sentry::findAllUsersWithAccess()会返回array()

如他们的github存储库中所述,我确定他们的代码是

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

现在,它获取所有用户并使用具有权限列表的用户过滤掉它。最大的问题是,当我作为开发人员获得用户集时,它会显示所有用户,我正在开发一个可能容纳数千个用户的应用程序,我只需要获得具有特定权限列表的用户。

关于这一点,我们喜欢使用具有->paginate()能力的人。

任何想法如何在不让所有用户获得的情况下获得它。

2 个答案:

答案 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);

检查文档:http://laravel.com/docs/pagination