2016-12-25 7 views
3

Ich bin neu in Laravel. Ich möchte dynamische Abfragen mit Laravel Query Builder machen.
Normalerweise kann ich dynamische Abfragen in PHPLaravel dynamisch, wo Abfragen mit Query Builder

$where = array(
    'hello' => 'world' 
); 

function get($where = null){ 
    if($where == "") $where = ""; 
    //Function which converts where clause into queries 
    wheretoqueries($where); //converts where clause 
    $sql = "SELECT * FROM $tbl $where"; 
    return $sql; 
} 
echo get($where); 

machen Wenn where-Klausel null Abfragen ist

SELECT * FROM $tbl 

wird, wenn where-Klausel nicht null Abfragen ist

SELECT * FROM $tbl WHERE hello = "world" 

Laravel orm Werke sein wird in Ordnung für where-Klausel, wenn Schlüssel und Wert vorhanden sind

A::where($where)->get(); 

Wenn wo null folgende Methode wird nicht

Antwort

1

Versuche dies. Wenn $ wo Variable etwas enthält, wird die Abfrage ausgeführt, andernfalls werden alle Daten aus dem Modell A abgerufen.

function get($where = null){ 
    if($where != null){ 
     A::where('field_name', '=', $where)->first(); 
    }else{ 
     A::all(); 
    } 
    } 

Hinweis: wenn Ihre Abfrage mehr als ein Wert zurückgeben, dann müssen Sie verwenden get() Methode am Ende des Query Builder, anstatt zuerst(); Referenz: https://laravel.com/docs/5.3/queries#where-clauses

+0

Glücklich zu wissen, dass meine Antwort hilfreich ist. –

0

arbeiten können Sie die Kette die where Abfragen als:

$query = Model::query(); 

if (!empty($value)) { 
    $query->where('column', $value); 
} 

$query->get(); 

ODER

Sie können when Methode wie:

Model::when($value, function ($query) use ($value) { 
     return $query->where('column', $value); 
    }) 
    ->get(); 
+0

Mit dieser Methode können Sie Verkettung für die Abfrage hinzufügen. –