Laravel-如何在其中的匿名函数中传递请求数据

Cod*_*rts 0 php request laravel eloquent

因此,如果用户未选择任何选项,我想获取所有项目,否则根据请求数据查询项目。但是我无法将传递$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();
            }
}
Run Code Online (Sandbox Code Playgroud)

显然我的showProducts闭包中有$ request,但是我无法在我的匿名函数内访问它where。如何在匿名函数中使用$ request数据?

jsz*_*ody 5

您需要使用use关键字从父范围传递参数:

$products = Product::where(function($query) use ($request) {
    // $request is now available
Run Code Online (Sandbox Code Playgroud)

现在$request在您的关闭中可用。

参见此处:http : //php.net/manual/zh/functions.anonymous.php#example-200