如何应用Laravel的Eloquent whereIn()以使其包含null?
我试过了:
User::whereIn("column", [null, 1, 2]) -> get();
和
User::whereIn("column", [DB::raw("null"), 1, 2]) -> get();
但两个查询都没有返回任何结果。
谢谢!
答案 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();