2016-07-05 12 views
0

erstellen, so habe ich eine Frage. Mit Laravel können Sie die Eloquent-Bibliothek verwenden, um dynamische Abfragen zu erstellen, aber hier ist mein Problem. Ich habe eine externe Datenbank, in der Prozeduren gespeichert sind, die ich aufrufen muss. Ich habe herausgefunden, dass dieser Code funktioniert.Wie dynamische Abfragen mit Laravel

$results = DB::connection('sqlsrv')->select($query); 

Aber ich muss wissen, ob es einen Weg gibt, um die Abfrage dynamisch erstellen führen nicht alle Daten in meinem Formular ausgefüllt werden müssen tho meine gespeicherten Prozedur ansonsten entweder einen Wert oder ‚NULL‘ erfordert.

Hier ist, was ich habe, so weit und es funktioniert, aber es ist nicht dynamisch, und ich habe eine Menge Müll machen es so

$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'; 

Und ich diese Funktion macht die Nullwerte, sondern um das Problem zu umgehen ist da die Abfrage haben "(diese Dinge), um die Abfrage meine letzte Abfrage sieht wie folgt aus

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 

Was ich wissen muss zu bauen, wenn eine Art und Weise gibt es um diese Sache zu arbeiten wie Java mit Prepared Statements tut, wo in die Variablen stelle ich ein "?" und füllen Sie dann die Daten separat, so und dann füllen Sie die "?"

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

Jede Hilfe wäre genial Dank seine

+1

Sie sollten zB 'wählen (DB :: raw (" exec Verfahren in der Lage zu tun,? ,? ", [$ arg1, $ arg2, $ arg3])) oder ähnlich. –

+0

Ok, lass mich das versuchen – AngelFlores

Antwort

1

Verwenden Abfrage in dieser Form:

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