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

Laravel集合筛选sv_email不为空返回空集合的问题如何解决

解决方案

问题根因

Laravel 集合的 where 方法默认采用松散比较(==),部分低版本Laravel对where方法的不等运算符支持存在瑕疵,会出现等值筛选正常、不等值筛选失效的问题。另外你原有代码外包裹的collect()是冗余写法,DB::get()返回的结果本身就是Laravel Collection实例,不需要额外转换。

可行方案

方案1:使用whereNot反向筛选(推荐,Laravel 5.7+支持)

直接对你已有的集合执行反向排除,匹配你原有可正常运行的等值筛选逻辑:

$result = $c->whereNot('sv_email', '');

方案2:使用filter自定义回调(全版本兼容,最稳定)

通过回调手动写判断逻辑,完全可控,不会受版本或者比较规则影响:

$result = $c->filter(function ($item) {
    // 严格判断sv_email不为空字符串
    return trim($item->sv_email) !== '';
});

如果你的集合是数组格式,将$item->sv_email替换为$item['sv_email']即可,额外加trim()可以顺便排除全是空白字符的异常值。

方案3:为where指定严格比较

如果要继续使用运算符写法,给where方法传入第四个参数true启用严格比较:

$result = $c->where('sv_email', '!=', '', true);

内容的提问来源于stack exchange,提问作者Jhoni Davinne Morales dos Sant

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:45:01