管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
b、表达式查询
: k3 ]* |1 v$ e/ K8 o# }# t' u表达式 含义
: H: T9 m# ]3 O3 t; F4 REQ 等于(=)
" Q6 J0 f3 @5 o% w/ v+ w" {! xNEQ 不等于(<>)
( X; | B8 o* ]& G; A- N" a4 rGT 大于(>)
+ A$ z- V% _, C ]1 C* M3 dEGT 大于等于(>=)" ~3 p7 L! t" k( ?$ @5 [
LT 小于(<)
2 z' A, p# `- i* eELT 小于等于(<=)
. }: v& t" L) S+ C3 DLIKE 模糊查询' D4 A7 V r* e8 l" w, B
[NOT] BETWEEN (不在)区间查询& P) X. U: t' n7 e1 x' M' \
[NOT] IN (不在)IN 查询! w) g* b4 Z# r/ P/ {8 i3 l
EXP 表达式查询,支持SQL语法
# e0 O! q# {. K7 c/ p
0 F/ I' N! ~/ x3 S5 F& s
/ @3 ]7 p" S& n) [) X1 c& n7 Y4 @$where['status'] = array("eq",0);//字段就是数组的下标,值就是对应的条件( \8 X0 v4 `9 w% C( R9 p7 }6 S
M("User")->where($where)->select();//查询status为0的记录; ]: }/ D' @6 ]* L( k4 M* Y
7 t1 j7 q4 ?+ z( o! J& c3、where方法数组查询例子
+ N- I( N5 t3 {1、如何使用数组实现同一字段多个条件?比如,查询createdate大于等于2016年4月20日并且小于等于2016年4月23日的记录。
/ a& w4 {0 i4 A& H$where['createdate'] = array(array('EGT',"2016-04-20"),array('ELT',"2016-04-23"));//使用一个二维数组就可以解决同一字段多个条件; E4 N& K8 ~9 s7 H
M("User")->where($where)->select();//查询createdate大于等于2016年4月20日并且小于等于2016年4月23日的记录: Q2 p, t9 F8 h8 @ P0 F1 T
* j/ p5 S# @% X {- f& v8 ?$ B& a
2、数组查询使用OR查询?比如,查询status等于0或者1的记录。
* _- y6 y+ _) Y: M3 S$where['status'] = array(array('EQ',"0"),array('EQ',"1"),"OR");//使用一个二维数组就可以解决同一字段多个条件
5 E9 m5 l+ U. B# |M("User")->where($where)->select();//查询status等于0或者1的记录
9 w: u. f, h) X$ _
/ O5 c8 \" m# F3 B; N3、多个条件里既有AND又有OR的数组查询?比如,查询createdate小于等于2016年4月20日并且status为1或者level为0的记录。
' r3 j" ^4 ~5 ]$where['createdate'] = array('EGT',"2016-04-20");$ p: n/ P0 P0 x+ _+ T7 O, e' X
$where['status'] = '1';+ ^0 l1 H4 [6 q: `* t5 D+ o
$condition['_logic'] = "AND";
% b2 l+ p& A/ S5 i$map['_complex']=$where;/ n+ s$ M. O( _* n# O
$map['level']='0';
7 {+ E& R0 A5 @* u6 f( c- A$map['_logic']='OR';0 d% p6 ?4 n8 @5 C
M("User")->where($map)->select();//查询createdate小于等于2016年4月20日并且status为1或者level为0的记录
" K r1 a! t/ l5 R: t |
|