Как передать запрос в функцию 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]);
        }
    }
]);
}
Другие вопросы по тегам