2016-07-05 140 views
0

所以我有一个问题。用laravel你可以使用Eloquent库创建动态查询,但这是我的问题。我有一个外部数据库,它具有我需要调用的存储过程。我发现这个代码有效。如何用laravel建立动态查询

$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没有预处理语句其中一种方式我放置一个'?'的变量然后分别填写数据,有点像这样,然后填写'?'

$query = 'exec PROCEDURE_HERE ??,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?' 

任何帮助将是真棒感谢

+1

你应该能够做到如'选择(DB ::原始(“EXEC程序,? ,?“,[$ arg1,$ arg2,$ arg3]))'或类似 –

+0

好的,让我试试看 – AngelFlores

回答

1

使用查询形式如下:

$query = User::select(...)->join(..); 
if(condition){ 
    $query->where(...); 
} 
if(condition){ 
    $query->where(...); 
} 
$query->get(...);