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();
如何应用 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();