Laravel 5 Eloquent where with multiple or in 从句

Laravel 5 Eloquent where with multiple or in Clauses

我是 Laravel 的新手,我尝试使用多个 where 和 or 子句从 table 中获取结果。

Cases::select()
  ->where('accepting_id', '=', '1')
  ->where('status', '=', 'active')
  ->orWhere("status", '=', 'closed')
  ->orWhere("status", '=', 'canceled')
  ->orderBy('id', 'DESC')
  ->get();

我使用多个 orWhere

得到的数据不正确

而不是使用 multi orWhere() 使用 whereIn()

Cases::select(`cols`)
    ->where('accepting_id', '=', '1')
    ->whereIn('status',  ['active', 'closed', 'canceled'])
    ->orderBy('id', 'DESC')
    ->get();

此外,如果您想对一些查询进行分组

Cases::select(`cols`)
    ->where('accepting_id', '=', '1')
    ->where(function ($q) {
        $q->where(`condition1`)
            ->orWhere(`condition1`);
    })
    ->orderBy('id', 'DESC')
    ->get();

您需要将 status where 子句添加到 where 闭包中:

Cases::select()
    ->where('accepting_id', '=', '1')
    ->where(function($query) {
        $query->where('status', '=', 'active')
            ->orWhere("status", '=', 'closed')
            ->orWhere("status", '=', 'canceled');
    })
    ->orderBy('id', 'DESC')
    ->get();
$user = Cases::select(`cols`)
              ->where('accepting_id', '=', '1')
              ->whereIn('status',  ['active', 'closed', 'canceled'])
              ->orderBy('id', 'DESC')
              ->get();

dd($user);

试试这个