LAravel Query Builder - немного другое, где Query
У меня есть таблица проекта, как это-
https://i.imgur.com/3Q4d7R5.png
Я хочу выбрать все данные с идентификаторами компаний 0 и 2 (идентификатор компании может быть 1,3,3,4,5,6,...).
Итак, что я сделал в Laravel Query Builder -
DB::table( 'project')
->where('project.is_archived', '=', 0)
->where('project.companyID', '=', 0)
->orwhere('project.companyID', '=', 2)
->get;
Но это не работает.
Может кто-нибудь помочь, пожалуйста?
2 ответа
Решение
DB::table('project')
->where('is_archived', 0)
->whereIn('companyID', [0, 2])
->get();
Это должно работать:)
В дополнение к решению mimo, вы также можете комбинировать операторы, используя обратные вызовы или специальные where
методы.
Так что-то вроде:
DB::table('project')
->where('is_archived', 0)
->orWhere(function(Builder $query) {
$query
->where('companyID', 0)
->where('companyID', 2)
});
создаст это утверждение:
SELECT * FROM project WHERE (is_archived = 0) AND (companyID = 0 OR companyID = 2)
Вы также можете сделать это с помощью простого ->where(function($query) {})
где вы меняете $boolean
аргумент инкапсулированного where()
операторы для "или" (что может допускать гораздо более сложные утверждения)
См. Документацию по Laravel 5.1 для группировки параметров.