2013-11-24 4 views
8

ich diese Frage haben, gemacht Laravel Query Builder mit:Laravel: Wie fügt man where-Klausel mithilfe von Abfrage-Generator hinzu?

$rows = DB::table('elements')->where('type', 1); 

Das entspricht: "* aus Elementen SELECT WHERE type = 1"

nun in einigen Fällen ich ein zweites hinzufügen müssen Wo erstellen eine Abfrage wie folgt aus:

SELECT * from elements WHERE type=1 AND lang='EN' 

Mit klassischen php ich würde so etwas wie:

$sql = 'SELECT * from elements WHERE type=1'; 

if($var==true) $sql .= " AND lang='EN'"; 

Wie kann ich das mit dem Laravel Query Builder machen?

Vielen Dank.

Antwort

22

Sie können so etwas wie dieses

$query = DB::table('elements'); 
$query->where('some_field', 'some_value'); 

// Conditionally add another where 
if($type) $query->where('type', 1); 

// Conditionally add another where 
if($lang) $query->where('lang', 'EN'); 

$rows = $query->get(); 

auch versuchen, this answer zu überprüfen.

+0

Sie könnten auch verkettet werden: '$ query-> where ('some_field', 'some_value') -> where ('Typ', 1) ; ' –

+4

@ManuelPedrera, Ja, aber um' wo' hinzuzufügen, kann man nicht ketten, weil 'OP' eine Bedingung prüfen will bevor er eine weitere where-Klausel hinzufügt. –

+1

Rcv danke, Ihre Lösung ist, was ich gesucht habe! – Cuttlefish

0
$userId = Auth::id(); 
$data['user_list'] =DB::table('users')-> 
select('name')-> 
where('id','!=',$userId)-> 
where('is_admin','!=','1')-> 
get(); 

wie, dass Sie mehr where-Klausel verwenden :)

+0

Willkommen bei Stack Overflow! Vielen Dank für dieses Code-Snippet, das sofortige Hilfe bieten kann. Eine richtige Erklärung [würde erheblich verbessern] (// meta.stackexchange.com/q/114762) ihren pädagogischen Wert, indem sie * warum * dies eine gute Lösung für das Problem ist, und es für zukünftige Leser mit ähnlichen, nützlicher machen würde, aber nicht identisch, Fragen. Bitte [bearbeiten] Sie Ihre Antwort, um eine Erläuterung hinzuzufügen und geben Sie an, welche Einschränkungen und Annahmen gelten. –