Динамическая или где - PullRequest
       2

Динамическая или где

0 голосов
/ 03 октября 2019

Я хочу создать вложенную группу параметров в своем запросе, где значение одного из моих вложенных where получено из формы.

if($request->view != '') {
    $query->where(function ($query) {
    $query->where('type', $request->view)
            ->orWhere('type', 2);
    })->get();
}

Прямо сейчас я получаю Undefined variable: request. Как получить значение $request->view в функции?

Ответы [ 4 ]

2 голосов
/ 03 октября 2019

Вы не передаете переменную $request в анонимную функцию. Взгляните на PHP документацию .

Чтобы ваш код работал, вы должны изменить его следующим образом:

if($request->view != '') {
    $query->where(function ($query) use($request) { // <-- without use, your 
      $query->where('type', $request->view)         //     anonymous function
            ->orWhere('type', 2);                   //     cannot access $request
    })->get();
}
1 голос
/ 03 октября 2019

В вашем случае не нужно использовать orWhere(). Вы можете использовать whereIn()

if($request->view != '') {
    $query->whereIn('type', [$request->view, 2])
}
1 голос
/ 03 октября 2019

Добавьте его в область действия use

if($request->view != '') {
    $query->where(function ($query) use ($request) {
        $query->where('type', $request->view)
            ->orWhere('type', 2);
    })->get();
}
1 голос
/ 03 октября 2019
if($request->view != '') {
    $query->where(function ($query) use ($request) {
    $query->where('type', $request->view)
            ->orWhere('type', 2);
    })->get();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...