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