Ответ 1
Это не глобальный, но use
, который работает с закрытием:
$games = $games->filter(function($game) use ($games_already_added) {
if(!in_array($game->id,$games_already_added)){
return true;
}
});
идея довольно проста, однако я еще не смог ее реализовать.
Здесь код
(Я изменил имя переменных, чтобы описать их использование)
$games = Game::all();
$games_already_added = $member->games()->lists('id');
$games = $games->filter(function($game){
global $games_already_added;
if(!in_array($game->id,$games_already_added)){
return true;
}
});
Когда код выполняется, я получаю сообщение об ошибке
in_array() expects parameter 2 to be array, null given
Я проверил, что переменная $games_already_added
определена во внешней области и содержит элементы.
Есть ли способ передать переменную $games_already_added
в качестве параметра в функции фильтра сбора?
Приветствуются любые предложения или рекомендации!
Спасибо!
Это не глобальный, но use
, который работает с закрытием:
$games = $games->filter(function($game) use ($games_already_added) {
if(!in_array($game->id,$games_already_added)){
return true;
}
});
Это не то, что вы пытаетесь сделать, но это похоже на то, чего вы хотите достичь.
$games_already_added = $member->games()->lists('id');
$games = Game::whereNotIn('id', $games_already_added)->get();
Но если вы действительно хотите сделать фильтрацию, то ответ @deczo - это путь.