Как передать запрос в Laravel Eloquent :: with функцией? - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть эта функция в моем контроллере:

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 голосов
/ 03 ноября 2018

В PHP, если вы хотите передать переменную встроенной функции, вам нужно добавить идентификатор use вместе с необходимыми переменными. Пример:

$var = 1.2;

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

echo $fn(2, 4); // prints 7.2
0 голосов
/ 03 ноября 2018

для использования 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]);
        }
    }
]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...