передавая два аргумента в подзапросе - PullRequest
0 голосов
/ 09 мая 2018

Я хочу передать 2 аргумента в подзапросе. Мой запрос работает, если я передаю статическую переменную в подзапросе. Я хочу передать динамическое значение в подзапросе. Я хочу передать $ status в подзапросе. Можно передать два аргумент в подзапросе как (function($query,$status) {}

рабочий

DB::table('asset_status_tracker')->where('asset_status_tracker.request_id','=',$request_id)->where(function($query) {
     $query->where('asset_status_tracker.status_after','=','17')->orwhere('asset_status_tracker.status_after','=','20');
   })
   ->select('asset_status_tracker.status_after')->first();

не работает

$status='17';
DB::table('asset_status_tracker')->where('asset_status_tracker.request_id','=',$request_id)->where(function($query,$status) {
     $query->where('asset_status_tracker.status_after','=',$status)->orwhere('asset_status_tracker.status_after','=','20');
   })
   ->select('asset_status_tracker.status_after')->first();

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Чтобы передать переменные в замыкание / анонимную функцию, вы можете сделать как function($query) use ($status)

$status='17';

DB::table('asset_status_tracker')
    ->where('asset_status_tracker.request_id','=',$request_id)
    ->where(function($query) use ($status) {
         $query->where('asset_status_tracker.status_after','=',$status)
               ->orwhere('asset_status_tracker.status_after','=','20');
  })->select('asset_status_tracker.status_after')
   ->first();

Аналогично, для большего количества переменных вы можете передать их как

function($query) use ($var1, $var2, ....)
0 голосов
/ 09 мая 2018

Вам нужно изменить свою переменную на $status = 17; без кавычек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...