2013-11-24 5 views
8

У меня есть этот запрос, сделанный с использованием строитель Laravel запросов:Laravel: как добавить предложение where с помощью построителя запросов?

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

Это соответствует: «SELECT * FROM элементов WHERE типа = 1»

Теперь, в некоторых случаях, мне нужно добавить второй Где чтобы создать запрос, как это:

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

Использование классический php Я хотел бы сделать что-то вроде:

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

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

Как это сделать с помощью Laravel Query Builder?

спасибо.

ответ

22

Вы можете попробовать что-то вроде этого

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

Кроме того, проверьте this answer.

+0

Они также могут быть прикованы: '$ query-> где ('строки field', 'some_value') -> где ('типа', 1) ; ' –

+4

@ManuelPedrera, да, но чтобы добавить' where' условно, вы не можете создать цепочку, потому что 'OP' собирается проверить условие до того, как он добавит другое предложение where. –

+1

Rcv спасибо, ваше решение - это то, что я искал! – Cuttlefish

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

как использовать множественные где предложение :)

+0

Добро пожаловать в переполнение стека! Благодарим вас за этот фрагмент кода, который может оказать немедленную помощь. Правильное объяснение [значительно улучшило бы] (// meta.stackexchange.com/q/114762) его образовательное значение, показав * почему * это хорошее решение проблемы и сделало бы его более полезным для будущих читателей с похожими, но не идентичные вопросы. Пожалуйста, отредактируйте свой ответ, чтобы добавить объяснение, и укажите, какие ограничения и допущения применяются. –

Смежные вопросы