所以我有一个问题。使用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 ??,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?'
任何帮助都会很棒,谢谢
答案 0 :(得分:1)
以这种形式使用查询:
$query = User::select(...)->join(..);
if(condition){
$query->where(...);
}
if(condition){
$query->where(...);
}
$query->get(...);