Laravel / Eloquent whereIn 为 null

Laravel / Eloquent whereIn with null

如何应用 Laravel 的 Eloquent whereIn() 以便它包含 null?

我试过:

User::whereIn("column", [null, 1, 2]) -> get();

User::whereIn("column", [DB::raw("null"), 1, 2]) -> get();

但是两个查询return都没有结果。

谢谢!

我认为您不能在 in mysql 语句中传递 null。如果您 运行 在 mysql 控制台中查询,它将跳过 null。

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

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

到目前为止,我发现的最佳方法如下。这相当于 where (whereIn Or WhereNotNull).

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