Подтвердить что ты не робот

Laravel 5 Красноречивый, где и в пунктах

Я пытаюсь получить результаты из таблицы с несколькими параметрами where и/или.

Мой оператор SQL:

SELECT * FROM tbl
WHERE m__Id = 46
AND
t_Id = 2
AND
(Cab = 2 OR Cab = 4)

Как я могу получить это с Laravel Eloquent?

Мой код в Laravel:

$BType = CabRes::where('m_Id', '=', '46')
                        ->where('t_Id', '=', '2')
                        ->where('Cab', '2')
                        ->orWhere('Cab', '=', '4')
                        ->get();
4b9b3361

Ответ 1

Используя расширенные параметры:

CabRes::where('m__Id', 46)
      ->where('t_Id', 2)
      ->where(function($q) {
          $q->where('Cab', 2)
            ->orWhere('Cab', 4);
      })
      ->get();

Или, что еще лучше, используя whereIn():

CabRes::where('m__Id', 46)
      ->where('t_Id', 2)
      ->whereIn('Cab', $cabIds)
      ->get();