在子查询中传递两个参数
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, ....)
我想在子中传递 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, ....)