多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
上面的查询条件仅仅是一个简单的相等判断,可以使用查询表达式支持更多的SQL查询语法,也是ThinkPHP查询语言的精髓,查询表达式的使用格式: ~~~ ~~~ $map['字段名'] = array('表达式','查询条件'); ~~~ ~~~ 表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是: | 表达式 | 含义 | 协助记忆 | |-----|-----|-----| | EQ | 等于(=) | equal | | NEQ | 不等于() | not equal | | GT | 大于(>) | greater | | EGT | 大于等于(>=) | equal or greater | | LT | 小于(<) | less than | | ELT | 小于等于(<=) | equal or less than | | LIKE | 模糊查询 | | | [NOT] BETWEEN | (不在)区间查询 | | | [NOT] IN | (不在)IN 查询 | | | EXP | 表达式查询,支持SQL语法 | expression | 表达式查询的用法示例如下: ### EQ :等于(=) 例如: ~~~ ~~~ $map['id'] = array('eq',100); ~~~ ~~~ 和下面的查询等效 ~~~ ~~~ $map['id'] = 100; ~~~ ~~~ 表示的查询条件就是 `id = 100` ### NEQ: 不等于() 例如: ~~~ ~~~ $map['id'] = array('neq',100); ~~~ ~~~ 表示的查询条件就是 `id <> 100` ### GT:大于(>) 例如: ~~~ ~~~ $map['id'] = array('gt',100); ~~~ ~~~ 表示的查询条件就是 `id > 100` ### EGT:大于等于(>=) 例如: ~~~ ~~~ $map['id'] = array('egt',100); ~~~ ~~~ 表示的查询条件就是 `id >= 100` ### LT:小于(<) 例如: ~~~ ~~~ $map['id'] = array('lt',100); ~~~ ~~~ 表示的查询条件就是 `id < 100` ### ELT: 小于等于(<=) 例如: ~~~ ~~~ $map['id'] = array('elt',100); ~~~ ~~~ 表示的查询条件就是 `id <= 100` ### [NOT] LIKE: 同sql的LIKE 例如: ~~~ ~~~ $map['name'] = array('like','thinkphp%'); ~~~ ~~~ 查询条件就变成 `name like 'thinkphp%'` 如果配置了DB_LIKE_FIELDS参数的话,某些字段也会自动进行模糊查询。例如设置了: ~~~ ~~~ 'DB_LIKE_FIELDS'=>'title|content' ~~~ ~~~ 的话,使用 ~~~ ~~~ $map['title'] = 'thinkphp'; ~~~ ~~~ 查询条件就会变成 `title like '%thinkphp%'` 支持数组方式,例如 ~~~ ~~~ $map['a'] =array('like',array('%thinkphp%','%tp'),'OR'); $map['b'] =array('notlike',array('%thinkphp%','%tp'),'AND'); ~~~ ~~~ 生成的查询条件就是: ~~~ ~~~ (a like '%thinkphp%' OR a like '%tp') AND (b not like '%thinkphp%' AND b not like '%tp') ~~~ ~~~ ### [NOT] BETWEEN :同sql的[not] between 查询条件支持字符串或者数组,例如: ~~~ ~~~ $map['id'] = array('between','1,8'); ~~~ ~~~ 和下面的等效: ~~~ ~~~ $map['id'] = array('between',array('1','8')); ~~~ ~~~ 查询条件就变成 `id BETWEEN 1 AND 8` ### [NOT] IN: 同sql的[not] in 查询条件支持字符串或者数组,例如: ~~~ ~~~ $map['id'] = array('not in','1,5,8'); ~~~ ~~~ 和下面的等效: ~~~ ~~~ $map['id'] = array('not in',array('1','5','8')); ~~~ ~~~ 查询条件就变成 `id NOT IN (1,5, 8)` ### EXP:表达式 支持更复杂的查询情况 例如: ~~~ ~~~ $map['id'] = array('in','1,3,8'); ~~~ ~~~ 可以改成: ~~~ ~~~ $map['id'] = array('exp',' IN (1,3,8) '); ~~~ ~~~ exp查询的条件不会被当成字符串,所以后面的查询条件可以使用任何SQL支持的语法,包括使用函数和字段名称。查询表达式不仅可用于查询条件,也可以用于数据更新,例如: ~~~ ~~~ $User = M("User"); // 实例化User对象 // 要修改的数据对象属性赋值 $data['name'] = 'ThinkPHP'; $data['score'] = array('exp','score+1');// 用户的积分加1 $User->where('id=5')->save($data); // 根据条件保存修改的数据 ~~~ ~~~