我的控制器中具有此功能:
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
的函数中?
答案 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