2014-01-24 11 views
1
$query = new TableA; 
$query = $query->join('tableB', 'tableA.b_id', '=', 'tableB.id'); 
$query = $query->where('tableB.something', '=', '1'); 
$query = $query->where('tableA.something_else', '=', '2'); 

И он производит:Laravel конструктор запросов расширенный Wheres И, ИЛИ

WHERE something=1 AND something_else=2 AND .. AND.... 

но теперь - мне это нужно:

WHERE something=1 AND something_else=2 AND (city=city1 OR city=city2 OR city=city3) AND (country=country1 OR country=country2) 

Любые идеи?

+0

не полностью связан с вашим вопросом, но вы должны изучить отношения laravel. Это сэкономит вам столько кода и сделает его более приятным. – elliotanderson

ответ

2

Воспользоваться Advanced Wheres. Для вашего примера это будет примерно так:

->where(function ($query) { 
     $query->where('city', '=', city1) 
      ->orWhere('city', '=', city2) 
      ->orWhere('city', '=', city3); 
    })->where(function ($query) { 
     $query->where('country', '=', country1) 
      ->orWhere('country', '=', country2); 
    }); 
Смежные вопросы