关闭

thinkphp where 高级一点的查询

323人阅读 评论(0) 收藏 举报
分类:

先讲重点:实现不同字段相同的查询条件

$User = M("User"); // 实例化User对象
$map['status&title'] =array('1','thinkphp','_multi'=>true);
 // 把查询条件传入查询方法
$User->where($map)->select();

'_multi'=>true必须加在数组的最后,表示当前是多条件匹配,这样查询条件就变成 status= 1 AND title = 'thinkphp' ,查询字段支持更多的,例如:


$map['status&score&title'] =array('1',array('gt','0'),'thinkphp','_multi'=>true);

查询条件就变成 status= 1 AND score >0 AND title = 'thinkphp'

注意:快捷查询方式中“|”和“&”不能同时使用。

今天有人问了我一个如何写登录,其中可以邮箱,电话号码,用户名登录,然后发现自己的查询写的好渣渣。只会写$map['id'] = 100;不能忍,其实也可以写作

$map['id'] =array('eq',100);那么同样道理,其中的eq可以换做neq,gt,lt等等
$map['name'] =array('like','thinkphp%');

查询条件就变成 name like 'thinkphp%'如果配置了DB_LIKE_FIELDS参数的话,某些字段也会自动进行模糊查询。例如设置了:


'DB_LIKE_FIELDS'=>'title|content'

的话,使用


$map['title'] ='thinkphp';

查询条件就会变成 name 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 notlike '%thinkphp%'AND b notlike '%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'));
抄了一些简单的,具体的可以去http://www.jb51.net/article/51218.htm

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7562次
    • 积分:251
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:3篇
    • 译文:1篇
    • 评论:0条
    文章分类