Eloquent get with query不传递变量值

时间:2018-03-22 00:16:07

标签: php laravel eloquent slim laravel-eloquent

在我的Slim App中,我正在使用Eloquent数据库。我构建了一个模型,我需要根据特定的用户ID传递课程。在我的控制器中我正在使用

public function course($user_id, $request, $response) 
{

    $id = $response['user_id'];
    // return json_encode($user_id);

    $course = Course::with(['progress' => function ($query) {
        $query->where('user_id', '=', $id);
    }])->get();

    return json_encode($course);

}

但是这会返回此错误

Notice: Undefined variable: id in line ...

但如果我分配

$course = Course::with(['progress' => function ($query) {
            $query->where('user_id', '=', 2);
        }])->get();

它将返回完美的结果。 为什么我可以传递通过URL传递的变量数据;

1 个答案:

答案 0 :(得分:1)

来自PHP manual

  

闭包还可以从父作用域继承变量。任何此类变量都必须传递给A语言构造。

如果要在匿名函数中使用use,则需要将其传递给它。它不会自动从父作用域继承变量。

$id