2013-11-24 11 views
8

Ho questa domanda, realizzati con generatore di query laravel:Laravel: come aggiungere la clausola where usando il generatore di query?

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

che corrisponde a: "SELECT * FROM elementi WHERE type = 1"

Ora, in alcuni casi, ho bisogno di aggiungere un secondo Dove per creare una query come questa:

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

Utilizzando classico php mi piacerebbe fare qualcosa di simile:

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

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

Come posso farlo utilizzando Laravel Query Builder?

Grazie.

risposta

22

si può provare qualcosa di simile

$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(); 

Inoltre, controllare this answer.

+0

Potrebbero anche essere concatenati: '$ query-> dove ('some_field', 'some_value') -> dove ('tipo', 1) ; ' –

+4

@ManuelPedrera, Sì, ma per aggiungere' where' condizionatamente, non puoi concatenare, poiché 'OP' sta per verificare una condizione prima di aggiungere un'altra clausola where. –

+1

Rcv grazie, la tua soluzione è quella che stavo cercando! – Cuttlefish

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

del genere si utilizzano più dove clausola :)

+0

Benvenuti in Stack Overflow! Grazie per questo snippet di codice, che potrebbe fornire un aiuto immediato. Una spiegazione appropriata [migliorerebbe notevolmente] (// meta.stackexchange.com/q/114762) il suo valore educativo mostrando * perché * questa è una buona soluzione al problema e renderebbe più utile ai futuri lettori con simili, ma non identiche, domande. Si prega di [modificare] la risposta per aggiungere una spiegazione e fornire un'indicazione di quali limitazioni e ipotesi si applicano. –

Problemi correlati