因此,如果用户未选择任何选项,我想获取所有项目,否则根据请求数据查询项目。但是我无法将$request
传递给我的函数。这是我的代码:
public function showProducts(Request $request)
{
$products = Product::all();
if(count($request->all()) != 0) {
$products = Product::where(function($query) {
$minPrice = $request['min'] ? $request['min'] : null;
$maxPrice = $request['max'] ? $request['max'] : null;
$colors = $request['color'] ? $request['color'] : null;
$sizes = $request['size'] ? $request['size'] : null;
if($minPrice != null && $maxPrice != null) {
$query->where('price', '>=', $minPrice)->where('price', '<=', $maxPrice);
}
if($minPrice == null && $maxPrice == null && $colors == null && $sizes == null) {
}
})->get();
}
}
显然我在showProducts闭包中有$ request但是我无法在where
内的匿名函数内访问它。如何在匿名函数中使用我的$ request数据?
答案 0 :(得分:3)
您需要使用use
关键字从父作用域传递参数:
$products = Product::where(function($query) use ($request) {
// $request is now available
现在$request
可用于关闭。
见这里:http://php.net/manual/en/functions.anonymous.php#example-200