Laravel WhereIn 或 Wheren 与 where

Kyl*_*lie 2 subquery where-in laravel

我试图设计一个查询,但我不知道从哪里开始。

我会写出我希望它如何运行。

    Items::whereIn('id',$ids)->orWhereIn('id_2',$ids)->where('type','!=',$type)->get();
Run Code Online (Sandbox Code Playgroud)

这就是我希望它工作的方式,但我知道这行不通,因为它只会忽略 WHERE type=$type 查询,因为 whereIN 已经提取了不符合 Where 查询的记录。

基本上我想要这个的雄辩版本......

  "SELECT * FROM items WHERE type!=$type AND (id IN (1,2,3) OR id_2 IN(1,2,3))"
Run Code Online (Sandbox Code Playgroud)

Nes*_*ert 5

您试图做的是对语句进行分组:https : //laravel.com/docs/5.3/queries#parameter-grouping

您需要做的是使代码如下所示:

Items::where('type', '!=', $type)
  ->where(function ($query) use ($ids) {
      $query->whereIn('id',$ids)
      ->orWhereIn('id_2',$ids);
  })
  ->get();
Run Code Online (Sandbox Code Playgroud)

这样你就可以将 where in 子句分组。