ThinkPHP 数据库查询(一)

 

1、条件查询

 

在查询条件里面,如果仅仅使用

 

$map‐>put('name','thinkphp');

 

查询条件应该是 name = 'thinkphp'

 

如果需要进行其它方式的条件判断,可以使用

 

$map‐>put('name',array('like','thinkphp%'));

 

这样,查询条件就变成 name like 'thinkphp%'

 

$map‐>put('id',array('gt',100));

 

查询条件 id > 100

 

$map‐>put('id',array('in','1,3,8'));

 

// 或者使用数组范围

 

$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

 

3、区间查询

 

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

 

4、组合查询

 

$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%'

 

5、多字段查询

 

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%') )

 

 

7、统计查询

 

// 获取用户数

 

$userCount = $User‐>count();

 

// 获取用户的最大积分

 

$maxScore = $User‐>max('score');

 

// 获取积分大于 0 的用户的最小积分

 

$minScore = $User‐>min('score','score>0');

 

// 获取用户的平均积分

 

$avgScore = $User‐>avg('score');

 

// 统计用户的总成绩

 

$sumScore = $User‐>sum('score');

 

8、定位查询

 

ThinkPHP 支持定位查询,可以使用getN 方法直接返回查询结果中的某个位置的记录。例如:

 

// 返回符合条件的第 2 条记录

$User‐>getN(2,'score>80','score desc');

 

还可以获取最后第二条记录

$User‐>getN(‐2,'score>80','score desc');

 

如果要查询第一条记录,还可以使用

$User‐>first('score>80','score desc');

 

// 获取最后一条记录

$User‐>last('score>80','score desc');

 

// 获取积分最高的前 5 条记录

$User‐>top(5,'','score desc');

 

ThinkPHP 还提供了另外一种动态查询方式,就是获取符合条件的前 N 条记录

 

例如,我们需要获取当前用户中积分大于 0,积分最高的前 5 位用户

$User‐>top5('score>0','*','score desc');

 

而在另外一个频道,我们需要获取点击最多的前 10 位主播

$Master‐>top10('','*','visit desc');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值