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 相关文章推荐
Email+URL的判断和自动转换函数
Oct 09 PHP
Apache2 httpd.conf 中文版
Dec 06 PHP
php 需要掌握的东西 不做浮躁的人
Dec 28 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
Sep 28 PHP
PHP制作图形验证码代码分享
Oct 23 PHP
PHP中imagick函数的中文解释
Jan 21 PHP
php通过function_exists检测函数是否存在的方法
Mar 18 PHP
php实现XSS安全过滤的方法
Jul 29 PHP
php array_pop 删除数组最后一个元素实例
Nov 02 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 PHP
Laravel框架实现文件上传的方法分析
Sep 29 PHP
php 的多进程操作实践案例分析
Feb 28 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
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
php使用递归计算文件夹大小
2014/12/24 PHP
php实现的mongoDB单例模式操作类
2018/01/20 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
sogou地图API用法实例教程
2014/09/11 Javascript
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
js基本算法:冒泡排序,二分查找的简单实例
2016/10/08 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
Vue的双向数据绑定实现原理解析
2020/02/17 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
记录一次websocket封装的过程
2020/11/23 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
物业经理求职自我评价
2013/09/22 职场文书
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
外贸英语毕业生自荐信
2013/11/14 职场文书
表决心的诗句大全
2014/03/11 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
文艺节目主持词
2015/07/06 职场文书
九九重阳节致辞
2015/07/31 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技
td 内容自动换行 table表格td设置宽度后文字太多自动换行
2022/12/24 HTML / CSS