本文实例讲述了tp5.1 框架查询表达式用法。分享给大家供大家参考,具体如下:
查询表达式
查询表达式支持大部分的SQL查询语法,也是ThinkPHP
查询语言的精髓,查询表达式的使用格式:
where('字段名','表达式','查询条件'); whereOr('字段名','表达式','查询条件');
5.1
还支持新的查询方法
whereField('表达式','查询条件'); whereOrField('表达式','查询条件');
Field
使用字段的驼峰命名方式。
表达式不分大小写,支持的查询表达式有下面几种:
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
[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();
推荐的方式是使用whereNull
和whereNotNull
方法查询。
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相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
tp5.1,查询表达式
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】
- 谭咏麟.2022-倾·听【环球】【WAV+CUE】
- 4complete《丛生》[320K/MP3][85.26MB]
- 4complete《丛生》[FLAC/分轨][218.01MB]
- 羽泉《给未来的你&天黑天亮》[WAV+CUE][968M]
- 庄心妍《我也许在等候》[低速原抓WAV+CUE]
- 王雅洁《小调歌后2》[原抓WAV+CUE]
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】