You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中whereNotIn遇null值失效问题求助

问题解决:Laravel whereNotIn 无法匹配 NULL 值

问题原因

这是SQL三值逻辑的特性导致的:NULL 和任何值进行比较(包括!=、NOT IN)都会返回UNKNOWN,而非TRUE或FALSE。所以当你执行whereNotIn('status', ['Draft'])时,status为NULL的记录不会被纳入查询结果。

解决方案

你需要额外处理NULL的情况,把status IS NULL的条件加入查询:

方案1:使用闭包组合条件

Order::where(function ($query) {
    $query->whereNotIn('status', ['Draft'])
          ->orWhereNull('status');
})->count();

方案2:使用whereRaw直接编写SQL逻辑

Order::whereRaw('status NOT IN (?) OR status IS NULL', ['Draft'])->count();

两种写法都能正确筛选出status不是'Draft' 或者 status为NULL的记录,最终得到预期的结果1。

内容的提问来源于stack exchange,提问作者Md. Azahar Alam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:31:35