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

Laravel Eloquent中‘<>’与‘!=’的区别及查询结果差异

Laravel Eloquent 中 <> 和 != 的区别及问题解析

首先明确:在Laravel Eloquent里,<>和!=本质上没有功能差异,它们都是用来表示“不等于”的查询条件,最终编译成SQL时,两者都会被转换为SQL标准的<>操作符(部分数据库如MySQL也兼容!=写法)。

你遇到的查询结果差异,根本原因不是这两个操作符的区别,而是SQL对NULL值的比较逻辑:

  • SQL中,NULL和任何值进行比较(包括用<>或!=)都会返回UNKNOWN,不会被纳入查询结果。
  • 当你执行->where("payed",'<>',2)时,只会筛选出payed字段值不为2且不为NULL的记录;如果你的数据中符合条件的非NULL记录不存在,就会返回空数组。
  • 而闭包查询里的->where('payed','!=',2)->orWhere('payed',null),明确把payed为NULL的记录也纳入了筛选范围,所以能得到预期结果。

总结:如果你的字段可能存在NULL值,需要同时处理“不等于某值”和“值为NULL”两种情况,单独用<>或!=都无法覆盖NULL的场景。

内容的提问来源于stack exchange,提问作者Hossein Rouhi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:54:51