过滤Eloquent结果Laravel 5.2

Jer*_*een 0 php laravel laravel-5

我想使用一些过滤器选项进行成员搜索.

我试过filter(),但是我收到了这个错误:

Fatal error: Call to a member function filter() on array
Run Code Online (Sandbox Code Playgroud)

当我只使用一个过滤器时,它可以工作,因为它只返回id.他们的方式我可以多次使用filter(),这是我的代码:

$members = User::all();

if ($has_avatar) {
    $members = $members->filter(function ($member) {
        //Avatar is not empty, other wise false
        return ($member->avatar != "") ? true : false;
    });
}
if ($is_online) {
    $members = $members->filter(function ($member) {
        //User is now online, other wise false
        return ($member->is_online == 1) ? true : false;
    });
}
Run Code Online (Sandbox Code Playgroud)

或者还有其他方法可以实现这一目标吗?

Car*_*cce 5

正如文档在https://laravel.com/docs/5.2/collections#method-filter上所述,此方法仅返回普通数组.

你可以尝试:

$members->filter(function ($member) {
    return ($member->avatar != "") && ($member->is_online == 1);
});
Run Code Online (Sandbox Code Playgroud)