thinkphp 表达式查询
上面的查询条件仅仅是一个简单的相等判断,可以使用查询表达式支持更多的SQL查询语法,也是ThinkPHP查询语言的精髓,查询表达式的使用格式:
$map['字段名'] = array('表达式','查询条件');
表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是:
| 表达式 | 含义 | 协助记忆 |
|---|---|---|
| EQ | 等于(=) | equal |
| NEQ | 不等于(<>) | not equal |
| GT | 大于(>) | greater |
| EGT | 大于等于(>=) | equal or greater |
| LT | 小于(<) | less than |
| ELT | 小于等于(<=) | equal or less than |
| LIKE | 模糊查询 | |
| [NOT] BETWEEN | (不在)区间查询 | |
| [NOT] IN | (不在)IN 查询 | |
| EXP | 表达式查询,支持SQL语法 | expression |
表达式查询的用法示例如下:
EQ :等于(=)
例如:
$map['id'] = array('eq',100);
和下面的查询等效
$map['id'] = 100;
表示的查询条件就是 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 < 100
ELT: 小于等于(<=)
例如:
$map['id'] = array('elt',100);
表示的查询条件就是 id <= 100
[NOT] LIKE: 同sql的LIKE
例如:
$map['name'] = array('like','thinkphp%');
查询条件就变成 name like 'thinkphp%' 如果配置了DB_LIKE_FIELDS参数的话,某些字段也会自动进行模糊查询。例如设置了:
'DB_LIKE_FIELDS'=>'title|content'
的话,使用
$map['title'] = 'thinkphp';
查询条件就会变成 title 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'));
查询条件就变成 id BETWEEN 1 AND 8
[NOT] IN: 同sql的[not] in
查询条件支持字符串或者数组,例如:
$map['id'] = array('not in','1,5,8');
和下面的等效:
$map['id'] = array('not in',array('1','5','8'));
查询条件就变成 id NOT IN (1,5, 8)
EXP:表达式
支持更复杂的查询情况 例如:
$map['id'] = array('in','1,3,8');
可以改成:
$map['id'] = array('exp',' IN (1,3,8) ');
exp查询的条件不会被当成字符串,所以后面的查询条件可以使用任何SQL支持的语法,包括使用函数和字段名称。查询表达式不仅可用于查询条件,也可以用于数据更新,例如:
$User = M("User"); // 实例化User对象// 要修改的数据对象属性赋值$data['name'] = 'ThinkPHP';$data['score'] = array('exp','score+1');// 用户的积分加1$User->where('id=5')->save($data); // 根据条件保存修改的数据
thinkphp 表达式查询的更多相关文章
- Thinkphp查询 1.查询方式 2.表达式查询 3.快捷查询 4.区间查询 5.组合查询 6.统计查询 7.动态查询 8.SQL 查询
1.使用字符串作为条件查询 $user = M('User'); var_dump($user->where('id=1 AND user="蜡笔小新"')->sele ...
- Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null?
Thinkphp中查询复杂sql查询表达式,如何表达MYSQL中的某字段不为空is not null?先上两种实现方式的实例:$querys["house_type_image"] ...
- thinkphp的普通查询与表达式查询
一.普通查询方式 a.字符串:$arr=$m->where("sex=0 and username='gege'")->find();//字符串需要加引号 b.数组 $ ...
- CRL快速开发框架系列教程二(基于Lambda表达式查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- thinkphp 定位查询 Model:last您所请求的方法不存在!
thinkphp 定位查询 Model:last您所请求的方法不存在! 用thinkphp3.1做项目的时候为了获取记录表中最后一个id用到了last()方法,出现了这个错误:Model:last ...
- ThinkPHP视图查询详解
ThinkPHP视图查询详解 参考http://www.jb51.net/article/51674.htm 这篇文章主要介绍了ThinkPHP视图查询,需要的朋友可以参考下 ThinkP ...
- lambda表达式查询经验:IN 和groupby的使用
lambda In的用法: lambda表达式查询没有IN这个方法,可以变通一下,in查询的数组是否包含在映射对象里面的集合里: 如下代码: var departmentIDs = input.Dep ...
- thinkphp 如何查询数据库
在控制器中使用M(); 数据表: 一.查询方式 1.字符串作为条件 2.使用索引数组作为条件查询条件 //可以更改逻辑关系 $condition['_logic'] = 'OR'; 二.表达式查询 三 ...
- ThinkPHP视图查询
ThinkPHP视图查询 一.总结 1.这里的视图查询和多表查询很像,当然多表查询的话肯定要支持左右链接查询 2.view:视图的使用,关键字是view 3.sql视图功能支持:thinkphp支持视 ...
随机推荐
- java执行spark查询hbase的jar包出现错误提示:ob aborted due to stage failure: Master removed our application: FAILED
执行java调用scala 打包后的jar时候出现异常 /14 23:57:08 WARN TaskSchedulerImpl: Initial job has not accepted any re ...
- (二十三)Http请求的处理过程
- 精选15个国外CSS框架
转自:http://blog.bingo929.com/css-frameworks-15.html 什么是css框架 实际上还是让我们从框架说起吧.框架就是一个你可以用于你的网站项目的基本的概念上的 ...
- ES6 学习 -- Promise对象
1.promise含义:可以将promise对象看成是一个容器,它保存着未来才会结束的某个事件(一般是异步操作事件)的结果,各 种异步操作都可以用promise对象来处理promise的特点:(1)p ...
- 2019-8-24-win10-本地适配器不支持重要的低能耗控制器状态
title author date CreateTime categories win10 本地适配器不支持重要的低能耗控制器状态 lindexi 2019-8-24 16:2:33 +0800 20 ...
- 【FHQ-Treap】P4146 序列终结者
题意: 给定一个序列,支持区间加,区间反转,区间max询问 裸的平衡树题,这里采用FHQ-Treap 每个节点多记录一个max值和两个lazy_tag,暴力Push_Down即可(大常数选手) 打完这 ...
- INSTALL_FAILED_TEST_ONLY oppor11p 安装时出现的问题
刚开始出现这个问题 我很懵逼, 因为我之前一直运行都好好的 !!我在网上查了好多资料 试了好几种办法 我先说下我成功的办法 方法1: Android Studio 3.0会在debu ...
- Oracle大数据查询优化
1.对于像状态之类的列,不是很多的,就可以加位图索引,对于唯一的列,就加唯一索引,其余的创建普通索引. 2.尽量不要使用select * 这样的查询,指定需要查询的列. 3.使用hits selec ...
- hadoop镜像文件和编辑日志文件
镜像文件和编辑日志文件 1)概念 namenode被格式化之后,将在/opt/module/hadoop-2.7.2/data/tmp/dfs/name/current目录中产生如下文件 edits_ ...
- flink提交文件出现java.io.IOException:unable to close file because the last block does not have enough number of replicas异常
当提交已经打包好的jar包时候,控制台出现以下的错误.