查询表达式
查询表达式支持大部分的SQL查询语法,也是ThinkPHP
查询语言的精髓,查询表达式的使用格式:
where(‘字段名‘,‘查询表达式‘,‘查询条件‘);
除了where
方法外,还可以支持whereOr
,用法是一样的。为了更加方便查询,大多数的查询表达式都提供了快捷查询方法。
表达式用法示例:
等于 (=)
Db::table(‘user‘)->where(‘id‘,‘=‘,1)->select();
和下面查询等效
Db::table(‘user‘)->where(‘id‘,1)->select();
SQL语句为:
select * from user where id = 1;
相关的有不等于(<>),大于(>),大于等于(>=),小于(<),小于等于(<=),写法与上面相同;
[NOT]LIKE:同SQL的LIKE
Db::table(‘user‘)->where(‘name‘, ‘like‘, ‘thinkphp%‘)->select();
SQL语句为:
select * from user where name like ‘thinkphp%‘;
[NOT]BETWEEN:同SQL的BETWEEN AND
查询条件支持字符串或者数组,例如:
Db::table(‘user‘)->where(‘id‘,‘between‘,‘1,8‘)->select();
和下面等效:
Db::table(‘user‘)->where(‘id‘,‘between‘,[1,8])->select();
SQL语句为:
select * from user where id between 1 and 8;
[NOT]IN:同SQL的IN
查询条件支持字符串或者数组,例如:
Db::table(‘user‘)->where(‘id‘,‘in‘,‘1,2,5‘)->select();
和下面等效:
Db::table(‘user‘)->where(‘id‘,‘in‘,[1,2,5])->select();
SQL语句为:
select * from user where id in (1,2,5);
[NOT]NULL:
查询字段是否(不)是Null
,例如:
Db::table(‘user‘)->where(‘name‘, null) ->where(‘email‘,‘null‘) ->where(‘name‘,‘not null‘) ->select();
SQL语句为:
SELECT * FROM `user` WHERE `name` IS NULL AND `email` IS NULL AND `name` IS NOT NULL
如果你需要查询一个字段的值为字符串null
或者not null
,应该使用:
Db::table(‘user‘)->where(‘title‘,‘=‘, ‘null‘) ->where(‘name‘,‘=‘, ‘not null‘) ->select();