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 для группировки параметров.

Другие вопросы по тегам