tp5循环查询语句_tp5.1框架查询表达式⽤法详解本⽂实例讲述了tp5.1 框架查询表达式⽤法。分享给⼤家供⼤家参考,具体如下:
查询表达式
查询表达式⽀持⼤部分的SQL查询语法,也是ThinkPHP查询语⾔的精髓,查询表达式的使⽤格式:
where('字段名','表达式','查询条件');
whereOr('字段名','表达式','查询条件');
5.1还⽀持新的查询⽅法
whereField('表达式','查询条件');
exists的用法whereOrField('表达式','查询条件');
Field使⽤字段的驼峰命名⽅式。
表达式不分⼤⼩写,⽀持的查询表达式有下⾯⼏种:
表达式
含义
快捷查询⽅法
=
等于
<>
不等于
>
⼤于
>=
⼤于等于
<
⼩于
<=
⼩于等于
[NOT] LIKE
模糊查询
whereLike/whereNotLike
[NOT] BETWEEN
(不在)区间查询
whereBetween/whereNotBetween
[NOT] 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();
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','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();
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语句为:
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框架的PHP程序设计有所帮助。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。