Eloquent get with query 不传递变量值
Eloquent get with query don't pass variable value
在我的 Slim 应用程序中,我使用的是 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);
}
但是这个有return这个错误
Notice: Undefined variable: id in line ...
但是如果我分配
$course = Course::with(['progress' => function ($query) {
$query->where('user_id', '=', 2);
}])->get();
它将return 完美的结果。
为什么我可以传递由 URL;
传递的变量数据
来自PHP manual:
Closures may also inherit variables from the parent scope. Any such variables must be passed to the use
language construct.
如果你想在匿名函数内部使用$id
,你需要传递给它。它不会自动从父作用域继承变量。
public function course($user_id, $request, $response)
{
$id = $response['user_id'];
// return json_encode($user_id);
$course = Course::with(['progress' => function ($query) use ($id) {
$query->where('user_id', '=', $id);
}])->get();
return json_encode($course);
}
在我的 Slim 应用程序中,我使用的是 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);
}
但是这个有return这个错误
Notice: Undefined variable: id in line ...
但是如果我分配
$course = Course::with(['progress' => function ($query) {
$query->where('user_id', '=', 2);
}])->get();
它将return 完美的结果。 为什么我可以传递由 URL;
传递的变量数据来自PHP manual:
Closures may also inherit variables from the parent scope. Any such variables must be passed to the
use
language construct.
如果你想在匿名函数内部使用$id
,你需要传递给它。它不会自动从父作用域继承变量。
public function course($user_id, $request, $response)
{
$id = $response['user_id'];
// return json_encode($user_id);
$course = Course::with(['progress' => function ($query) use ($id) {
$query->where('user_id', '=', $id);
}])->get();
return json_encode($course);
}