Конструктор запросов Laravel 5, сложное соединение (условие И (условие ИЛИ) - PullRequest
0 голосов
/ 03 мая 2018

Мне нужно воспроизвести следующий запрос в конструкторе запросов Laravel:

select * from table LEFT JOIN table_b ON `condition` AND (`condition` OR `condition`)

Я знаю, что вы можете делать сложные where заявления вроде этого:

Model::where(function ($query) {
  return $query->where("field","value")->orWhere("field","value");
})->where("field","value")->get();

И я знаю, что вы можете делать полусложные on утверждения вроде этого:

->leftJoin('table', function ($join) {
  $join->on("field","=","field_b")
    ->on("field_a","=","field_c");
})

Но мне нужно condition AND (condition OR condition) ВНУТРИ заявления on. Это возможно без выполнения DB::raw() или эквивалентного?

1 Ответ

0 голосов
/ 03 мая 2018

Используйте это:

->leftJoin('table', function ($join) {
    $join->on("field","=","field_b")
        ->on(function($join) {
            $join->on("field_a","=","field_c")
                ->orOn("field_d","=","field_e");
        });
})
...