duancong2965 2016-06-12 18:28
浏览 200
已采纳

Laravel - 如何在匿名函数里面传递请求数据

So I want to get all items if the user hasn't selected any options, otherwise query the items according to the request data. However I can't pass the $request to my function. Here is my code:

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();
            }
}

Obviously I have $request in my showProducts closure however I can't access it inside my anonymous function inside where. How can I use my $request data in the anonymous function?

  • 写回答

1条回答 默认 最新

  • douliang2935 2016-06-12 18:36
    关注

    You need to use the use keyword to pass in parameters from the parent scope:

    $products = Product::where(function($query) use ($request) {
        // $request is now available
    

    Now $request is available in your closure.

    See here: http://php.net/manual/en/functions.anonymous.php#example-200

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 cplex运行后参数报错是为什么
  • ¥15 之前不小心删了pycharm的文件,后面重新安装之后软件打不开了
  • ¥15 vue3获取动态宽度,刷新后动态宽度值为0
  • ¥15 升腾威讯云桌面V2.0.0摄像头问题
  • ¥15 关于Python的会计设计
  • ¥15 聚类分析 设计k-均值算法分类器,对一组二维模式向量进行分类。
  • ¥15 stm32c8t6工程,使用hal库
  • ¥15 找能接spark如图片的,可议价
  • ¥15 关于#单片机#的问题,请各位专家解答!
  • ¥15 博通raid 的写入速度很高也很低