Laravel:在Collection过滤上传递额外参数

Joe*_*dez 22 php laravel eloquent

这个想法非常简单,但我还没有实现它.

这是代码

(我已经更改了变量的名称来描述它们的用法)

    $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;
        }   
    });
Run Code Online (Sandbox Code Playgroud)

执行代码时,我收到错误

in_array() expects parameter 2 to be array, null given

我已经验证变量$games_already_added是在外部作用域上定义的并且包含项目.

有没有什么办法可以将$games_already_added变量作为参数传递给集合的过滤函数?

任何建议或指导都非常感谢!

谢谢!

Jar*_*zyk 69

它不是全局的,但use它适用于Closure:

$games = $games->filter(function($game) use ($games_already_added) {
    if(!in_array($game->id,$games_already_added)){
        return true;
    }   
});
Run Code Online (Sandbox Code Playgroud)

  • Grrr 我知道我需要“use”,但忘记将参数括在括号中 (2认同)