Laravel/Eloquent whereIn with null

Joh*_*984 2 eloquent laravel-5.3

如何应用Laravel的Eloquent whereIn()以使其包含null?

我试过了:

User::whereIn("column", [null, 1, 2]) -> get();
Run Code Online (Sandbox Code Playgroud)

User::whereIn("column", [DB::raw("null"), 1, 2]) -> get();
Run Code Online (Sandbox Code Playgroud)

但两个查询都没有返回结果.

谢谢!

Dee*_*apa 6

在 where 条件下获取带有 null 和 value 的数据非常棘手。即使您直接使用Where 和OrWhereNotNull 条件,那么对于每一行,您都将获取这两个项目,而忽略其他where 条件(如果应用)。例如,如果您有更多 where 条件,它将屏蔽这些条件,但仍然返回 null 或值项,因为您使用了 orWhere 条件。就像上面评论部分提到的@Angelin Calu 一样。

到目前为止我发现的最好的方法如下。这相当于 where (whereIn OrWhereNotNull)。

User::where(function ($query) {
            $query->whereIn('column',[1,2])->orWhereNull('column');                  
        })->get();
Run Code Online (Sandbox Code Playgroud)


Sau*_*nam 5

我不认为你可以通过nullinMySQL的声明.如果在mysql控制台中运行查询,它将跳过null.

尝试 User::whereNull('column')->orWhereIn('column', array(1, 2))->get();

  • 当你有另一个像 `where('active', true)` 这样的 `where` 时,`orWhereIn` 的表现如何? (2认同)