$map->put('id',array('in',array(1,3,8)));
上面表示的查询条件都是 id in (1,3,8)
支持的查询表达式有
EQ|NEQ|GT|EGT|LT|ELT|LIKE|BETWEEN|IN|NOT IN
区间查询
ThinkPHP支持对某个字段的区间查询,例如:
代码: 复制内容到剪贴板
$map->put('id',array(1,10)); // id >=1 and id<=10
$map->put('id',array('10','3','or')); //id >= 10 or id <=3
$map->put('id',array(array('neq',6),array('gt',3),'and')); // id != 6 and id > 3
组合查询
如果进行多字段查询,那么字段之间的逻辑关系是 逻辑与 AND,但是用下面的规则可以更改默认的逻辑判断,例如下面的查询条件:
代码: 复制内容到剪贴板
$map->put('id',array('neq',1));
$map->put('name','ok');
// 现在的条件是 id !=1 and name like '%ok%'
$map->put('_logic','or');
// 现在的条件变为 id !=1 or name like '%ok%'
多字段查询
ThinkPHP还支持直接对进行多字段查询的方法,可以简化查询表达式和完成最复杂的查询方法,例如:
代码: 复制内容到剪贴板
$map->put('id,name,title',array(array('neq',1),array('like','aaa'),array('like','bbb'),'or'));
查询条件是
代码: 复制内容到剪贴板
( id != 1) OR ( name like 'aaa') OR ( title like '%bbb%')
如果结合上面的几种方式,我们可以写出下面更加复杂的查询条件
代码: 复制内容到剪贴板
$map->put('id',array('NOT IN','1,6,9'));
$map->put('name,email',array(array('like','thinkphp'),array('like','liu21st'),'or'));
以上查询条件变成:
代码: 复制内容到剪贴板
( id NOT IN(1,6,9) ) AND ( ( name like 'aaa') OR ( title like '%bbb%') )
统计查询
在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数、所有用户的最大积分、用户的平均成绩等等,ThinkPHP为这些统计操作提供了一系列的内置方法。
代码: 复制内容到剪贴板
// 获取用户数