如何将请求传递给Laravel Eloquent :: with函数?

时间:2018-11-03 08:12:48

标签: laravel eloquent laravel-5.7

我的控制器中具有此功能:

public function search(Request $request) {
    return Product::with([
        'producer' => function($producer) {
            dd($request);
            if ( isset($request->producer_id) ) {
                $producer->where(['id','=',$request->producer_id]);
            }
        }
    ]);
}

现在dd()$request是未定义的,但是如果我在return之前抓到它,它将正确显示。

如何将$request变量传递到::with的函数中?

2 个答案:

答案 0 :(得分:1)

要使用request,必须在laravel中使用use关键字

public function search(Request $request) {
return Product::with([
    'producer' => function($producer) use($request) {
                                      ^^^
        dd($request);
        if ( isset($request->producer_id) ) {
            $producer->where(['id','=',$request->producer_id]);
        }
    }
]);
}

答案 1 :(得分:1)

在PHP中,如果要将变量传递给内联函数,则需要添加use标识符以及必需的变量。示例:

$var = 1.2;

$fn = function ($param1, $param2) use ($var) {
    return ($param1 + $param2) * $var;
};

echo $fn(2, 4); // prints 7.2