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 相关文章推荐
用PHP实现文件上传二法
Oct 09 PHP
php download.php实现代码 跳转到下载文件(response.redirect)
Aug 26 PHP
php 数组的指针操作实现代码
Feb 08 PHP
php多个字符串替换成同一个的解决方法
Jun 18 PHP
php封装好的人民币数值转中文大写类
Dec 20 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
May 20 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
Nov 21 PHP
Lumen timezone 时区设置方法(慢了8个小时)
Jan 20 PHP
Docker搭建自己的PHP开发环境
Feb 24 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
如何让PHP编码更加好看利于阅读
May 12 PHP
PHP进阶学习之类的自动加载机制原理分析
Jun 18 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 array_flip() 删除数组重复元素
2009/01/14 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
最简单的js图片切换效果实现代码
2011/09/24 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
vue如何从接口请求数据
2017/06/22 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
微信小程序实现动态显示和隐藏某个控件功能示例
2018/12/14 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
微信小程序新闻网站详情页实例代码
2020/01/10 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
[51:53]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第二场 1月24日
2021/03/11 DOTA
对Python中的@classmethod用法详解
2018/04/21 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
How to spawning asynchronous work in J2EE
2016/08/29 面试题
中专生职业生涯规划书范文
2013/12/29 职场文书
学生实习介绍信
2014/01/15 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
我爱幼儿园演讲稿
2014/09/11 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
工地材料员岗位职责
2015/04/11 职场文书
Python中第三方库Faker的使用详解
2022/04/02 Python