2016-01-20 3 views
0

Я хочу сделать поиск членов с некоторыми параметрами фильтра.Фильтровать Плохие результаты Laravel 5.2

Я попытался фильтр(), но я получил эту ошибку:

Fatal error: Call to a member function filter() on array 

Это работает, когда я использую только один фильтр, потому что он возвращает только идентификаторы. Является ли их способ, которым я могу использовать фильтр() несколько раз, это мой код:

$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; 
    }); 
} 

Или есть другой способ достижения этой цели?

+0

Хм, вы можете попробовать использовать сбор(); '$ members = collect (User :: all());' или см. мой ответ для более подходящего решения –

ответ

1

Я думаю, проблема в том, что в Laravel 5.2 метод all() возвращает массив.

Попробуйте использовать:

$members = User::get(); 

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; 
    }); 
} 
Смежные вопросы