先讲重点:实现不同字段相同的查询条件
$User
= M(
"User"
);
// 实例化User对象
$map
[
'status&title'
] =
array
(
'1'
,
'thinkphp'
,
'_multi'
=>true);
// 把查询条件传入查询方法
$User
->where(
$map
)->select();
|
'_multi'=>true必须加在数组的最后,表示当前是多条件匹配,这样查询条件就变成 status= 1 AND title = 'thinkphp' ,查询字段支持更多的,例如:
|
$map
[
'status&score&title'
] =
array
(
'1'
,
array
(
'gt'
,
'0'
),
'thinkphp'
,
'_multi'
=>true);
|
查询条件就变成 status= 1 AND score >0 AND title = 'thinkphp'
注意:快捷查询方式中“|”和“&”不能同时使用。
今天有人问了我一个如何写登录,其中可以邮箱,电话号码,用户名登录,然后发现自己的查询写的好渣渣。只会写$map
[
'id'
] = 100;不能忍,其实也可以写作
$map
[
'id'
] =
array
(
'eq'
,100);那么同样道理,其中的eq可以换做neq,gt,lt等等
$map
[
'name'
] =
array
(
'like'
,
'thinkphp%'
);
|
查询条件就变成 name like 'thinkphp%'如果配置了DB_LIKE_FIELDS参数的话,某些字段也会自动进行模糊查询。例如设置了:
|
'DB_LIKE_FIELDS'
=>
'title|content'
|
的话,使用
|
$map
[
'title'
] =
'thinkphp'
;
|
查询条件就会变成 name like '%thinkphp%'
支持数组方式,例如
|
$map
[
'a'
] =
array
(
'like'
,
array
(
'%thinkphp%'
,
'%tp'
),
'OR'
);
$map
[
'b'
] =
array
(
'notlike'
,
array
(
'%thinkphp%'
,
'%tp'
),
'AND'
);
|
生成的查询条件就是:
|
(a
like
'%thinkphp%'
OR
a
like
'%tp'
)
AND
(b
not
like
'%thinkphp%'
AND
b
not
like
'%tp'
)
|
[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'
));
抄了一些简单的,具体的可以去http://www.jb51.net/article/51218.htm
|