thinkphp中的where()方法

简介:

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

 

等等这些都是常用的where查询方法。




本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/4994302.html,如需转载请自行联系原作者

相关文章
|
3月前
|
开发框架 Java 关系型数据库
ThinkPHP
【8月更文挑战第23天】ThinkPHP
65 2
|
3月前
|
缓存 自然语言处理 JavaScript
Thinkphp6安装
Thinkphp6安装
48 0
|
PHP Android开发 前端开发
ThinkPHP 初探
准备 ThinkPHP下载 Eclipse-for-php 如何使用 放置位置 检验引用效果 效果 路由 调试之模板的使用 前提 生产模式 开发模式 添加完相应的路径以及模板文件后 总结 对国人开发的这款PHP框架早有耳闻,今日就来趟趟水,也为了今后更好的学习。
1319 0
|
PHP
ThinkPhp学习08
原文:ThinkPhp学习08 一、普通查询方式  a、字符串      $arr=$m->where("sex=0 and username='gege'")->find();  b、数组       1 // 2.
1114 0
|
PHP 数据安全/隐私保护 缓存
ThinkPhp学习13
原文:ThinkPhp学习13 简单登录验证 创建Login类 1 Login类对应的模板 1 2 3 用户名: 4 密 码: 5 验证码: //src=Code类下的code方法,Math.
864 0
|
SQL .NET 开发框架
ThinkPhp学习11
原文:ThinkPhp学习11 一、模板的使用        (重点)   a、规则    模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[index].
758 0
|
Web App开发 关系型数据库 PHP
ThinkPhp学习03
原文:ThinkPhp学习03 一、ThinkPHP 3 的输出      (重点)  a、通过 echo 等PHP原生的输出方式在页面中输出  b、通过display方法输出   想分配变量可以使用assign方法 public function index(){ $name="潘...
1141 0
|
PHP
ThinkPhp学习07
原文:ThinkPhp学习07 简单CRUD操作 1 public function show() { 2 $m=M('User'); 3 4 // $arr=$m->find(2); //查找id=2的数据,find只能返回一条数据 5 //2.
924 0