thinkPHP的表达式查询用法详解


Posted in PHP onSeptember 14, 2016

本文实例讲述了thinkPHP的表达式查询。分享给大家供大家参考,具体如下:

ThinkPHP 表达式

这里说的表达式,是指 ThinkPHP 框架中特有的表达式。这些表达式用于查询或更新删除等操作的 where条件 及模板标签中。

Where 条件中使用表达式

Where 条件表达式格式为:

$map['字段名']  = array('表达式', '操作条件');

其中 $map 是一个普通的数组变量,可以根据自己需求而命名。上述格式中的表达式实际是运算符的意义:

ThinkPHP运算符 与 SQL运算符 对照表
TP运算符 SQL运算符 例子 实际查询条件
eq = $map['id'] = array('eq',100); 等效于:$map['id'] = 100;
neq != $map['id'] = array('neq',100); id != 100
gt > $map['id'] = array('gt',100); id > 100
egt >= $map['id'] = array('egt',100); id >= 100
lt $map['id'] = array('lt',100); id
elt $map['id'] = array('elt',100); id
like like $map['username'] = array('like','Admin%'); username like 'Admin%'
between between and $map['id'] = array('between','1,8'); id BETWEEN 1 AND 8
not between not between and $map['id'] = array('not between','1,8'); id NOT BETWEEN 1 AND 8
in in $map['id'] = array('in','1,5,8'); id in(1,5,8)
not in not in $map['id'] = array('not in','1,5,8'); id not in(1,5,8)
and(默认) and $map['id'] = array(array('gt',1),array('lt',10)); (id > 1) AND (id
or or $map['id'] = array(array('gt',3),array('lt',10), 'or'); (id > 3) OR (id
xor(异或) xor 两个输入中只有一个是true时,结果为true,否则为false,例子略。 1 xor 1 = 0
exp 综合表达式 $map['id'] = array('exp','in(1,3,8)'); $map['id'] = array('in','1,3,8');

补充说明

同 SQL 一样,ThinkPHP运算符不区分大小写,eq 与 EQ 一样。

between、 in 条件支持字符串或者数组,即下面两种写法是等效的:

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

exp 表达式

上表中的 exp 不是一个运算符,而是一个综合表达式以支持更复杂的条件设置。exp 的操作条件不会被当成字符串,可以使用任何 SQL 支持的语法,包括使用函数和字段名称。

exp 不仅用于 where 条件,也可以用于数据更新,如:

$Dao = M("Article");
// 构建 save 的数据数组,文章点击数+1
$data['aid'] = 10;
$data['counter'] = array('exp','counter+1');
// 根据条件保存修改的数据
$User->save($data);

注:对于数字字段的加减,可以直接使

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
使用 php4 加速 web 传输
Oct 09 PHP
JS中encodeURIComponent函数用php解码的代码
Mar 01 PHP
修改php.ini以达到屏蔽错误信息并记录日志
Jun 16 PHP
php使用base64加密解密图片示例分享
Jan 20 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
May 09 PHP
php htmlentities()函数的定义和用法
May 13 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
Jul 14 PHP
PHP三种方式实现链式操作详解
Jan 21 PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
Feb 28 PHP
利用PHP实现开心消消乐的算法示例
Oct 12 PHP
Laravel框架模型的创建及模型对数据操作示例
May 07 PHP
PHP实现对二维数组某个键排序的方法
Sep 14 #PHP
Laravel+jQuery实现AJAX分页效果
Sep 14 #PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
Sep 14 #PHP
PHP自定义函数实现格式化秒的方法
Sep 14 #PHP
PHP经典算法集锦【经典收藏】
Sep 14 #PHP
微信支付的开发流程详解
Sep 13 #PHP
PHP仿微信多图片预览上传实例代码
Sep 13 #PHP
You might like
海贼王:最美的悬赏令!
2020/03/02 日漫
解析Linux下Varnish缓存的配置优化
2013/06/20 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
Javascript模板技术
2007/04/27 Javascript
jQuery 动画基础教程
2008/12/25 Javascript
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
Js获取事件对象代码
2010/08/05 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
微信小程序常用简易小函数总结
2019/02/01 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
2020/06/05 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
python批量修改图片后缀的方法(png到jpg)
2018/10/25 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
python 写一个文件分发小程序
2020/12/05 Python
查询优化的一般准则有哪些
2015/03/08 面试题
2014年最新离婚协议书范本
2014/10/11 职场文书
高一军训决心书
2015/02/05 职场文书
食堂卫生管理制度
2015/08/04 职场文书
三严三实·严以用权心得体会
2016/01/12 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
修改并编译golang源码的操作步骤
2021/07/25 Golang