Thinkphp中查询复杂的情况需要使用查询表达式,使用格式:
$map['字段名'] = array('表达式','查询条件');
表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是:
表达式 含义
EQ 等于(=)
NEQ 不等于(<>)
GT 大于(>)
EGT 大于等于(>=)
LT 小于(<)
ELT 小于等于(<=)
LIKE 模糊查询
[NOT] BETWEEN (不在)区间查询
[NOT] IN (不在)IN 查询
EXP 表达式查询,支持SQL语法
示例见Thinkphp的官方文档。官方文档中没有查询某字段为空的例子,试了试,方法如下
判定不为空
$cond['pic']=array('NEQ','NULL'); //字段pic不为空
$list=$mod->where($cond)->order('id desc')->select();
判定为空
$cond['pic']=array('EQ','NULL'); //字段pic为空
其实挺简单的,一看就知道,只是官方的文档中没有例子。
这是我网上看到的一个文章 ,当然殷雯小编遇到了同样的问题, 但是这个文章还是很不全面,在mysql中null和空字符串还是有差别的.
eq,null 只是一种空的情况,还有就是真正为空.
组织sql里尽量把这二种情况都写入
and (a <> "" and a is not NULL) 这样写才保险.