首页 > 解决方案 > Laravel“wherenotin”语句包含空值是否正常?

问题描述

我将 Laravel 5.6.7 与连接到 SQL Server 2014 的 SQL 服务器驱动程序一起使用。

尝试以下查询时:

Warrant::where('vsStatus',632)
        ->whereNotIn('vsType',[-26927,-26929])
        ->whereNotIn('vsCategory',[-15723,-21708,-21708])
        ->where('Warrant.ORI','XXXXXXXXX')
        ->join('GlobalJacket','GlobalJacket.JacketID','=','Warrant.JacketID')
        ->where('GlobalJacket.JacketType','=',2)->get();

我收到了 2 个结果集,其中 vsType = -19325 和 vsType = null

这是调试栏看到的查询:

select * from [Warrant] inner join [GlobalJacket] on [GlobalJacket].[JacketID] = [Warrant].[JacketID] where [vsStatus] = '632' and [vsType] not in ('-26927', '-26929') and [vsCategory] not in ('-15723', '-21708', '-21708') and [Warrant].[ORI] = 'XXXXXXXXX' and [GlobalJacket].[JacketType] = '2'

当直接将其粘贴到 Management Studio 17 中时,我只得到 1 个结果,其中 vsType = -19325

现在我可以轻松地将空值包含到“whereNotIn”值列表中,但是这是设计使然吗?所有的东西都认为'null'不在列表中,但是为什么MMS会忽略null值,而eloquent不会呢?

谢谢您的帮助。

标签: sqlsql-serverlaraveleloquent

解决方案


推荐阅读