在 Laravel (PHP) 的匿名函数中访问超出范围的变量
Access to out-of-scope variable within anonymous functions in Laravel (PHP)
我想在 Laravel 中为相关表格播种。我在访问匿名函数内的范围外变量时遇到问题,我为 whereHas
方法定义了 "where" 条件来对我的 has 查询进行设置。
$id = $user->id; // out-of-scope variable
$posts = Post::whereHas('comments', function ($query) {
$query->where('user_id', $id);
})->get();
从技术上讲,我无权访问匿名函数内的 $id
。
这不是 Laravel 问题,而是 PHP 问题。只需在参数列表后添加use ($variable)
:
$posts = Post::whereHas('comments', function ($query) use ($id) {
$query->where('user_id', $id);
})->get();
我想在 Laravel 中为相关表格播种。我在访问匿名函数内的范围外变量时遇到问题,我为 whereHas
方法定义了 "where" 条件来对我的 has 查询进行设置。
$id = $user->id; // out-of-scope variable
$posts = Post::whereHas('comments', function ($query) {
$query->where('user_id', $id);
})->get();
从技术上讲,我无权访问匿名函数内的 $id
。
这不是 Laravel 问题,而是 PHP 问题。只需在参数列表后添加use ($variable)
:
$posts = Post::whereHas('comments', function ($query) use ($id) {
$query->where('user_id', $id);
})->get();