tp5框架中查询表达式如何使用?
Admin 2021-05-18 群英技术资讯 2062 次浏览
这篇文章给大家分享的是关于tp5框架中查询表达式的用法,小编认为是比较实用的,因此分享给大家参考学习,文本示例具有一定的借鉴价值,感兴趣的朋友可以看看。
查询表达式支持大部分的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 |
| < TIME | 小于某个时间 | whereTime |
| >= TIME | 大于等于某个时间 | whereTime |
| <= TIME | 小于等于某个时间 | 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
例如:
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();
查询条件支持字符串或者数组,例如:
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();
查询条件支持字符串或者数组,例如:
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查询支持使用闭包方式
查询字段是否(不)是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();
推荐的方式是使用whereNull和whereNotNull方法查询。
Db::name('user')->whereNull('name')
->whereNull('email')
->whereNotNull('name')
->select();
支持更复杂的查询情况 例如:
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();
关于tp5查询表达式的用法就介绍到这,需要的朋友可以参考上述示例,希望文本对大家学习和了解查询表达式的用法有帮助,更多查询表达式的用法技巧可以关注其他相关文章。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
swoole服务器无法连接的解决办法:首先通过命令“php -m”检查swoole扩展;然后使用命令“firewall-cmd --state”查看防火墙是否关闭;接着使用命令“telnet”进行连接测试即可。
下面由phpstorm教程栏目给大家介绍PhpStorm本地断点调试的方法步骤,希望对需要的朋友有所帮助!php代码在调试时,经常是print_r或者var_dump来断点,但是当项目较为复杂的情况下,这么做效率就非常低下了....
PHP数组与字符串互相转换如何实现?一些朋友可能会遇到这方面的问题,对此在下文小编向大家来讲解一下,内容详细,易于理解,希望大家阅读完这篇能有收获哦,有需要的朋友就往下看吧!
本篇文章给大家带来了关于laravel的相关知识,其中主要介绍了关于单点登录的相关问题,单点登录是指在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,下面一起来看一下,希望对大家有帮助。
可以用define()函数来定义常量,在PHP5.3.0以后,可以使用const关键字在类定义之外定义常量。一个常量一旦被定义,就不能再改变或者取消定义。常量只能包含标量数...
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008