tp5.1 框架查询表达式用法详解


Posted in PHP onMay 25, 2020

本文实例讲述了tp5.1 框架查询表达式用法。分享给大家供大家参考,具体如下:

查询表达式

查询表达式支持大部分的SQL查询语法,也是ThinkPHP查询语言的精髓,查询表达式的使用格式:

where('字段名','表达式','查询条件');
whereOr('字段名','表达式','查询条件');

5.1还支持新的查询方法

whereField('表达式','查询条件');
whereOrField('表达式','查询条件');

Field使用字段的驼峰命名方式。

表达式不分大小写,支持的查询表达式有下面几种:

表达式 含义 快捷查询方法
= 等于  
不等于  
> 大于  
>= 大于等于  
小于  
小于等于  
[NOT] LIKE 模糊查询 whereLike/whereNotLike
[NOT] BETWEEN (不在)区间查询 whereBetween/whereNotBetween
[NOT] IN (不在)IN 查询 whereIn/whereNotIn
[NOT] NULL 查询字段是否(不)是NULL whereNull/whereNotNull
[NOT] EXISTS EXISTS查询 whereExists/whereNotExists
[NOT] REGEXP 正则(不)匹配查询(仅支持Mysql)  
[NOT] BETWEEM TIME 时间区间比较 whereBetweenTime
> TIME 大于某个时间 whereTime
小于某个时间 whereTime
>= TIME 大于等于某个时间 whereTime
小于等于某个时间 whereTime
EXP 表达式查询,支持SQL语法 whereExp

表达式查询的用法示例如下:

等于(=)

例如:

Db::name('user')->where('id','=',100)->select();

和下面的查询等效

Db::name('user')->where('id',100)->select();

最终生成的SQL语句是:

SELECT * FROM `think_user` WHERE `id` = 100

不等于(<>)

例如:

Db::name('user')->where('id','<>',100)->select();

最终生成的SQL语句是:

SELECT * FROM `think_user` WHERE `id` <> 100

大于(>)

例如:

Db::name('user')->where('id','>',100)->select();

最终生成的SQL语句是:

SELECT * FROM `think_user` WHERE `id` > 100

大于等于(>=)

例如:

Db::name('user')->where('id','>=',100)->select();

最终生成的SQL语句是:

SELECT * FROM `think_user` WHERE `id` >= 100

小于(<)

例如:

Db::name('user')->where('id','<',100)->select();

最终生成的SQL语句是:

SELECT * FROM `think_user` WHERE `id` < 100

小于等于(<=)

例如:

Db::name('user')->where('id','<=',100)->select();

最终生成的SQL语句是:

SELECT * FROM `think_user` WHERE `id` <= 100

[NOT] LIKE: 同sql的LIKE

例如:

Db::name('user')->where('name','like','thinkphp%')->select();

最终生成的SQL语句是:

SELECT * FROM `think_user` WHERE `name` LIKE 'thinkphp%'

like查询支持使用数组

Db::name('user')->where('name','like',['%think','php%'],'OR')->select();

实际生成的SQL语句为:

SELECT * FROM `think_user` 
WHERE (`name` LIKE '%think' OR `name` LIKE 'php%')

为了更加方便,应该直接使用whereLike方法

Db::name('user')->whereLike('name','thinkphp%')->select();
Db::name('user')->whereNotLike('name','thinkphp%')->select();

[NOT] BETWEEN :同sql的[not] between

查询条件支持字符串或者数组,例如:

Db::name('user')->where('id','between','1,8')->select();

和下面的等效:

Db::name('user')->where('id','between',[1,8])->select();

最终生成的SQL语句都是:

SELECT * FROM `think_user` WHERE `id` BETWEEN 1 AND 8

最快捷的查询方法是:

Db::name('user')->whereBetween('id','1,8')->select();
Db::name('user')->whereNotBetween('id','1,8')->select();

[NOT] IN: 同sql的[not] in

查询条件支持字符串或者数组,例如:

Db::name('user')->where('id','in','1,5,8')->select();

和下面的等效:

Db::name('user')->where('id','in',[1,5,8])->select();

最终的SQL语句为:

SELECT * FROM `think_user` WHERE `id` IN (1,5,8)

最快捷的查询方法是:

Db::name('user')->whereIn('id','1,5,8')->select();
Db::name('user')->whereNotIn('id','1,5,8')->select();

 

[NOT] IN查询支持使用闭包方式

[NOT] NULL :

查询字段是否(不)是Null,例如:

Db::name('user')->where('name', null)
->where('email','null')
->where('name','not null')
->select();

实际生成的SQL语句为:

SELECT * FROM `think_user` 
WHERE `name` IS NULL 
AND `email` IS NULL 
AND `name` IS NOT NULL

如果你需要查询一个字段的值为字符串null或者not null,应该使用:

Db::name('user')->where('title','=', 'null')
->where('name','=', 'not null')
->select();

推荐的方式是使用whereNullwhereNotNull方法查询。

Db::name('user')->whereNull('name')
->whereNull('email')
->whereNotNull('name')
->select();

EXP:表达式

支持更复杂的查询情况 例如:

Db::name('user')->where('id','in','1,3,8')->select();

可以改成:

Db::name('user')->where('id','exp',' IN (1,3,8) ')->select();

exp查询的条件不会被当成字符串,所以后面的查询条件可以使用任何SQL支持的语法,包括使用函数和字段名称。

动态查询

对于上面的查询表达式,可以使用动态查询方法进行简化,例如:

Db::name('user')->where('id','>=',100)->select();

可以简化为:

Db::name('user')->whereId('>=',100)->select();

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

PHP 相关文章推荐
php中文件上传的安全问题
Oct 09 PHP
对盗链说再见...
Oct 09 PHP
discuz论坛 用户登录 后台程序代码
Nov 27 PHP
PHP 提取图片img标记中的任意属性的简单实例
Dec 10 PHP
php设计模式之简单工厂模式详解
Sep 04 PHP
php查找指定目录下指定大小文件的方法
Nov 28 PHP
PHP callback函数使用方法和注意事项
Jan 23 PHP
Codeigniter控制器controller继承问题实例分析
Jan 19 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
Feb 04 PHP
php 类中的常量、静态属性、非静态属性的区别
Apr 09 PHP
iis 7下安装laravel 5.4环境的方法教程
Jun 14 PHP
PHP下载文件函数与用法示例
Sep 27 PHP
tp5.1 框架数据库高级查询技巧实例总结
May 25 #PHP
thinkphp5.1 框架导入/导出excel文件操作示例
May 25 #PHP
thinkphp5.1框架模板赋值与变量输出示例
May 25 #PHP
thinkphp5.1 框架钩子和行为用法实例分析
May 25 #PHP
php7 参数、整形及字符串处理机制修改实例分析
May 25 #PHP
php7 错误处理机制修改实例分析
May 25 #PHP
php7 list()、session及其他模块的修改实例分析
May 25 #PHP
You might like
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
JS面向对象编程浅析
2011/08/28 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
jQuery动画效果animate和scrollTop结合使用实例
2014/04/02 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
javascript 实现动态侧边栏实例详解
2016/11/11 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
python 专题九 Mysql数据库编程基础知识
2017/03/16 Python
利用python爬取散文网的文章实例教程
2017/06/18 Python
Python 多线程Threading初学教程
2017/08/22 Python
Python反射的用法实例分析
2018/02/11 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
2018/12/18 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
python中altair可视化库实例用法
2021/01/26 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
高级人员简历的自我评价分享
2013/11/03 职场文书
医学生职业生涯规划书范文
2014/03/13 职场文书
学校门卫岗位职责
2014/03/16 职场文书
车辆委托书范本
2014/10/05 职场文书
2014年民警工作总结
2014/11/25 职场文书
小石潭记导游词
2015/02/03 职场文书
中班下学期个人总结
2015/02/12 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书