2016-03-18 3 views
2

Я хотел бы сделать Sql запрос, как это:Eloquent Laravel Где и или и

Получить ((Age > 10 И Weight > 50) ИЛИ Name = Jack) И Actif = 1

Мой Красноречивый запрос выглядеть следующим образом :

$user = DB::table('users') 
    ->where('Age', '>=', 10) 
    ->where('Weight', '>=', 50) 
    ->orWhere('Name', 'Jack') 
    ->where('Actif', 1) 
    ->get(); 

Но на самом деле он вернет результат Jack, хотя эта колонка Actif is set to 0.

ответ

4

Если посмотреть на гнездование, где часть так будет выглядеть следующим образом:

$sites = DB::table('users') 
    ->where(function($q) {      // (
     $q->where(function($q){     // (
      $q->where('Age', '>=', 10)   //  Age > 10 
       ->where('Weight', '>=', 50);  //  AND Weight > 50 
     })          // ) 
     ->orWhere('Name', 'Jack');    // OR Name = Jack 
    })           //) 
    ->where('Actif', 1)       // AND Actif = 1 
    ->get(); 
Смежные вопросы