Laravel / Eloquent whereIn with null

时间:2016-11-17 14:49:13

标签: eloquent laravel-5.3

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

我试过了:

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

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

但两个查询都没有返回任何结果。

谢谢!

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

在条件非常棘手的地方获取具有null和value的数据。即使您使用直接的Where和OrWhereNotNull条件,对于每行,您也会获取这两个项目,而忽略其他where条件(如果应用)。例如,如果您有更多where条件,则它将掩盖那些条件,并且由于使用了orWhere条件而仍然返回null或value项。就像上面在评论部分提到的@Angelin Calu。

到目前为止,我发现的最好方法如下。它作为where(whereIn或WhereNotNull)

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