在子查询中传递两个参数

passing two argument in subquery

我想在子中传递 2 个参数 query.my 如果我在子中传递静态变量,查询工作正常 subquery.I 想在子中传递动态值 query.I 想在中传递 $status subquery.I可以在子查询中传递两个参数作为 (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();

您需要将变量更改为不带引号的 $status = 17;

要将变量传递给 closure/anonymous 函数,您可以像 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, ....)