Как передать запрос в функцию Laravel Eloquent::with?
У меня есть эта функция в моем контроллере:
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 ответа
Решение
В PHP, если вы хотите передать переменную встроенной функции, вам нужно добавить use
идентификатор вместе с необходимыми переменными. Пример:
$var = 1.2;
$fn = function ($param1, $param2) use ($var) {
return ($param1 + $param2) * $var;
};
echo $fn(2, 4); // prints 7.2
Для того, чтобы использовать request
Вы должны использовать use
Ключевое слово в Laravel
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]);
}
}
]);
}