where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括普通查询、表达式查询、快捷查询、区间查询、组合查询在内的查询操作。where方法的参数支持字符串和数组,虽然也可以使用对象但并不建议。

字符串条件

$User = M("User"); // 实例化User对象
$User->where('type=1 AND status=1')->select();

SELECT * FROM think_user WHERE type=1 AND status=1

数组条件

普通查询

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

SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1

表达式查询

$map['字段1']  = array('表达式','查询条件1');
$map['字段2'] = array('表达式','查询条件2');
$Model->where($map)->select(); // 也支持
$map['id']  = array('eq',100);

表示的查询条件就是 id = 100

$map['id']  = array('neq',100);

表示的查询条件就是 id <> 100

$map['id']  = array('gt',100);

表示的查询条件就是 id > 100

$map['id']  = array('egt',100);

表示的查询条件就是 id >= 100

$map['id']  = array('lt',100);

表示的查询条件就是 id < 100

$map['id']  = array('elt',100);

表示的查询条件就是 id <= 100

[NOT] LIKE: 同sql的LIKE

$map['name'] = array('like','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 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'));

[NOT] IN: 同sql的[not] in ,查询条件支持字符串或者数组,例如:

$map['id']  = array('not in','1,5,8');
$map['id']  = array('not in',array('1','5','8'));

EXP:表达式,支持更复杂的查询情况

$map['id']  = array('exp',' IN (1,3,8) ');

等同于

$map['id']  = array('in','1,3,8');

组合查询

$User = M("User"); // 实例化User对象
$map['id'] = array('neq',1);
$map['name'] = 'ok';
$map['_string'] = 'status=1 AND score>10';
$User->where($map)->select();

最后得到的查询条件就成了:( `id` != 1 ) AND ( `name` = 'ok' ) AND ( status=1 AND score>10 )

复合查询

$where['name']  = array('like', '%thinkphp%');
$where['title'] = array('like','%thinkphp%');
$where['_logic'] = 'or';
$map['_complex'] = $where;
$map['id'] = array('gt',1);

等同于

$where['id'] = array('gt',1);
$where['_string'] = ' (name like "%thinkphp%") OR ( title like "%thinkphp") ';

查询条件是 
( id > 1) AND ( ( name like '%thinkphp%') OR ( title like '%thinkphp%') )

ThinkPHP3.2 where方法的使用的更多相关文章

  1. ThinkPHP3.2 中空方法、空控制器和空模块的设置

    ThinkPHP3.2 中空方法.空控制器和空模块的设置 1.空方法设置 问题: 当你访问一个不存在的方法的时候: 如: http://localhost/test/index.php/Home/Us ...

  2. thinkphp3.2 success方法注意

    success方法的url一定要用U()方法来生成, $this->success('修改成功',U('showlist'),3);

  3. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

  4. thinkphp3.2.3中U()方法和redirect()方法区别

    今天博主看3.1的教程,学着3.2,就遇到了这个坑,怎么就是不跳转呢,很纳闷!! 在thinkphp3.1 中 U()方法是可以执行跳转的(看视频教程里面是可以的,博主没有测试过). 但是在think ...

  5. ThinkPHP3.2 G函数代码及 使用方法

    ThinkPHP3.2 G函数代码及 使用方法 代码: // 内存是否可调用 define('MEMORY_LIMIT_ON',function_exists('memory_get_usage')) ...

  6. ThinkPHP3.2判断手机端访问并设置默认访问模块的方法

    ThinkPHP3.2判断是否为手机端访问并跳转到另一个模块的方法 目录结构 公共模块Common,Home模块,Mobile模块 配置Application/Common/Conf/config.p ...

  7. thinkphp3.2 cli模式的正确使用方法

    最近要使用thinkphp3.2版本的cli模式,手动执的话没有问题,比如php /www/index.php home/article/get 这样没有问题,但是一般用cli模式都是定时任务比较多, ...

  8. thinkphp3.0增加setInc、setDec方法

    thinkphp3.0增加setInc.setDec方法 thinkphp3.0增加setInc.setDec方法,今天查看thinkphp2.0的方法setInc.setDec时是这样写的: 而对于 ...

  9. 【PHP开发】ThinkPHP3.1.3问题集及解决方法

    Outline: 无法获取post请求中的url参数的问题 中文存入数据表后为空字符串 1. 无法获取post请求中的url参数的问题 ThinkPHP3.1.3中,如果提交的post请求中,如果要在 ...

随机推荐

  1. CodeForces - 779D

    Little Nastya has a hobby, she likes to remove some letters from word, to obtain another word. But i ...

  2. Java学习笔记33(IO:打印流,IO流工具类)

    打印流: 有两个类:PrintStream     PrintWriter类,两个类的方法一样,构造方法不一样 PrintStream构造方法:接收File类型,接收字符串文件名,接收字节输出流(Ou ...

  3. 复习回顾(String,StringBuffer,Arrays方法总结)

    String: String类的对象是一经创建就无法变动内容的字符串常量,创建String类的对象可以使用直接赋值和利用构造方法赋值 String str=“hello”;  String str=n ...

  4. Python socket简单操作

    #服务端:#导入socket模块 import socket #创建socket对象,创建了一个手机 server = socket.socket() #给程序设置一个ip地址和端口号,买了个手机卡 ...

  5. Win7+Ubuntu双系统时间不一致

    转自:http://blog.sina.com.cn/s/blog_55546df90100xkf3.html 最近装了ubuntu和win7双系统,但是发现每次进入win7后时间总是不对,总是比当地 ...

  6. PHP安全之webshell和后门检测(转)

    基于PHP的应用面临着各种各样的攻击: XSS:对PHP的Web应用而言,跨站脚本是一个易受攻击的点.攻击者可以利用它盗取用户信息.你可以配置Apache,或是写更安全的PHP代码(验证所有用户输入) ...

  7. ORA-16019搭建DG设置归档线程参数报错

    #操作描述:搭建DG,主库修改参数log_archive_dest_1线程路径报错 ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_ ...

  8. Pycharm出现Segmentation fault...(interrupted by signal 11: SIGSEGV)的解决方法

    众所周知,用pycharm远程服务器debug代码已经成为学习深度学习相关代码的有力工具,但是最近创建了一个虚拟环境,进行debug的时候,莫名会出现下面这个错误,看的我都抽风了 bash: line ...

  9. SPI有关CPOL和CPHA的时序图

    SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置. 时钟极性(CPOL)对传输协议没有重大的影响. 如果CPOL=0,串行同步时钟的空闲状态为低电平: 如果 ...

  10. Build Tool(构建工具)

    what: 构建工具能够帮助你创建一个可重复的.可靠的.携带的且不需要手动干预的构建.构建工具是一个可编程的工具,它能够让你以可执行和有序的任务来表达自动化需求.假设你想要编译源代码,将生成的clas ...