php - Laravel : Passing extra parameter on Collection filtering

标签 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;
        }   
    });

当代码执行时我收到错误

in_array() 期望参数 2 为数组,给定 null

我已验证变量 $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;
    }   
});

关于php - Laravel : Passing extra parameter on Collection filtering,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24597499/

相关文章:

php - 如何在 Laravel 中使用 Angular

SQL 数据库架构 - 多对多或数据透视表

mysql - 如何连接 "related products"表

php - 使用 eloquent 检索由 SQL LIKE 运算符组成的集合

php - 如何在 PHP/MySQL 中存储生日和年龄以便年龄可以每天更新?

php - ORDER BY RAND() 的性能受到影响吗?

php - Bootstrap 表延伸到容器之外

mysql - 更改表抛出错误 #1005

Laravel 5.7 和 Font Awesome

javascript - 从 ajax 调用访问 PHP 函数