表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是:
表达式
|
含义
|
EQ
|
等于(
=)
|
NEQ
|
不等于(
<>)
|
GT
|
大于(
>)
|
EGT
|
大于等于(
>=)
|
LT
|
小于(
<)
|
ELT
|
小于等于(
<=)
|
LIKE
|
模糊查询
|
[NOT] BETWEEN
|
(不在)区间查询
|
[NOT] IN
|
(不在)
IN 查询
|
EXP
|
表达式查询,支持
SQL语法
|
示例如下:
EQ
:等于(
=)
例如:
$map[
'id'
] =
array(
'eq'
,
100
);
和下面的查询等效
$map[
'id'
] = 100
;
表示的查询条件就是
id = 100
NEQ: 不等于(
<>)
例如:
$map[
'id'
] =
array(
'neq'
,
100
);
表示的查询条件就是
id <> 100
GT:大于(
>)
例如:
$map[
'id'
] =
array(
'gt'
,
100
);
表示的查询条件就是
id > 100
EGT:大于等于(
>=)
例如:
$map[
'id'
] =
array(
'egt'
,
100
);
表示的查询条件就是
id >= 100
LT:小于(
<)
例如:
$map[
'id'
] =
array(
'lt'
,
100
);
表示的查询条件就是
id < 100
ELT: 小于等于(
<=)
例如:
$map[
'id'
] =
array(
'elt'
,
100
);
表示的查询条件就是
id <= 100
LIKE: 同
sql的
LIKE
例如:
$map[
'name'
] =
array(
'like'
,
'thinkphp%'
);
查询条件就变成
name like 'thinkphp%'
如果配置了
DB_LIKE_FIELDS参数的话,某些字段也会自动进行模糊查询。例如设置了:
'DB_LIKE_FIELDS'=>'title|content'
的话,使用
$map[
'title'
] =
'thinkphp'
;
查询条件就会变成
name like '%thinkphp%'
[NOT] BETWEEN
:同
sql的
[not] between,查询条件支持字符串或者数组,例如:
$map[
'id'
] =
array(
'between'
,
'1,8'
);
和下面的等效
:
$map[
'id'
] =
array(
'between'
,array(
'1','8')
);
查询条件就变成
id BETWEEN 1 AND 8
[NOT] IN: 同
sql的
[not] in ,查询条件支持字符串或者数组,例如:
$map[
'id'
] =
array(
'not in'
,
'1,5,8'
);
和下面的等效
:
$map[
'id'
] =
array(
'not in'
,array(
'1','5','8')
);
查询条件就变成
id NOT IN (1,5, 8)
EXP:表达式,支持更复杂的查询情况
例如:
$map[
'id'
] =
array(
'in'
,
'1,3,8'
);
可以改成:
$map[
'id'
] =
array(
'exp'
,
' IN (1,3,8) '
);
exp查询的条件不会被当成字符串,所以后面的查询条件可以使用
任何SQL支持的语法,包括使用函数和字段名称。查询表达式不仅可用于查询条件,也可以用于数据更新,例如:
$User
=
M
(
"User"
);
//
实例化User对象
// 要修改的数据对象属性赋值
$data
[
'name'
] =
'ThinkPHP'
;
$data
[
'score'
] =
array(
'exp'
,
'score+1'
);
//
用户的积分加1
$User->where(
'id=5'
)->save($data);
//
根据条件保存修改的数据