所以我有一个问题。使用 laravel,您可以使用 Eloquent 库来创建动态查询,但这是我的问题。我有一个外部数据库,其中包含我需要调用的存储过程。我发现这段代码有效。
$results = DB::connection('sqlsrv')->select($query);
但是我需要知道是否有办法动态构建查询,因为并非我的表单中的所有数据都必须填充,否则我的存储过程需要一些值或"NULL"。
这是我到目前为止所拥有的,它有效,但它不是动态的,我必须做很多垃圾才能做到这一点
$query = 'exec PROCEDURE_HERE "'.$request->name.'","'.$request->flastname.'","'.$request->mlastname.'",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,0,null,"'.$request->datepicker.'",0,null';
我有这个函数来处理空值,但问题是因为查询有"(那些东西)来构建查询,我的最终查询看起来像这样
public function adaptRequest(Request $request){
if (!isset($request->name)){
$request->name = "null";
}
if (!isset($request->flastname)){
$request->flastname = "null";
}
if (!isset($request->mlastname)){
$request->mlastname = "null";
}
if ($request->datepicker == ""){
$request->datepicker = "null";
}
return $request;
}
exec PROCEDURE "null","null","null",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,0,null,"null",0,null
我需要知道的是,是否有办法像java对Prepared语句所做的那样解决这个问题,在变量中我放置了一个"?",然后单独填充数据,有点像这样,然后填充"?"。
$query = 'exec PROCEDURE_HERE ??,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?'
任何帮助都会很棒,谢谢
以以下形式使用查询:
$query = User::select(...)->join(..);
if(condition){
$query->where(...);
}
if(condition){
$query->where(...);
}
$query->get(...);