thinkphp5.1官方文檔已經說明了關於[NOT] NULL的表達式用法,使用如下
->where('字段名','null')//查詢為NULL時的條件
->where('字段名','not null')//查詢不是NULL時的條件
這種用法在單獨語句使用時是沒有任何問題的,官方還提供了快捷方法,用以簡化查詢。
方法 | 作用 |
---|---|
whereNull | 查詢字段是否為Null |
whereNotNull | 查詢字段是否不為Null |
但是,但條件是使用數組表達式
封裝條件時,以上寫法將會 報錯 。查詢表達式的使用格式:
where('字段名','表達式','查詢條件');
例如,封裝數組條件:
$map = [];
$map[] = ['name','like','think'];
$map[] = ['status','=',1];
以上寫法要追加查詢條件為[NOT] NULL的情況下,按照最上面的NULL表達式寫法是無法正確組裝數組條件的。正確寫法如下:
$map[] = ['字段名','null',''];//查詢為NULL時的條件
$map[] = ['字段名','not null',''];//查詢不是NULL時的條件
或
$where['name'] = ['null', ''];
$where['name'] = ['not null', ''];
以上查詢[NOT] NULL的的數組封裝條件將被正確執行。
參考:https://blog.csdn.net/weixin_43930641/article/details/105238748