管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
b、表达式查询
% t% [3 ]" b9 \4 }/ t1 ]( X9 W表达式 含义0 F. `; F2 l$ @+ {" O
EQ 等于(=)
! U5 p- Y5 B b) QNEQ 不等于(<>)
, D! x+ E9 c9 sGT 大于(>)
8 C3 N; q- V n# DEGT 大于等于(>=)
4 e: J3 X( t: Z3 \: | vLT 小于(<)7 ] U% }; v3 E: ^" C0 |1 D
ELT 小于等于(<=)
0 G3 l$ O v' VLIKE 模糊查询5 \% {6 F8 W* R' S W& y- k
[NOT] BETWEEN (不在)区间查询$ a: b. w6 z1 ?
[NOT] IN (不在)IN 查询5 Q' \$ m4 u. \0 R0 S
EXP 表达式查询,支持SQL语法1 }% ^3 s( q0 T
5 z: Y. C' b" x( z q/ Z" i
- N& f3 l4 U! E: v6 @1 V
$where['status'] = array("eq",0);//字段就是数组的下标,值就是对应的条件7 y- n: s& m9 v/ e) m! n
M("User")->where($where)->select();//查询status为0的记录 |) v+ I; B, }! L: E
' O' S/ E4 X' v3 m
3、where方法数组查询例子
8 a' s( }, P. J! U" M& n6 I0 J1、如何使用数组实现同一字段多个条件?比如,查询createdate大于等于2016年4月20日并且小于等于2016年4月23日的记录。( @. o% i9 w4 u ]1 Z a" \
$where['createdate'] = array(array('EGT',"2016-04-20"),array('ELT',"2016-04-23"));//使用一个二维数组就可以解决同一字段多个条件* ^2 l2 f- p6 X
M("User")->where($where)->select();//查询createdate大于等于2016年4月20日并且小于等于2016年4月23日的记录: C6 |' A- E$ `' d: E% R
: Z% _* D9 o9 Q% y" K2、数组查询使用OR查询?比如,查询status等于0或者1的记录。
0 z$ Z: z( q" N0 I' ~$where['status'] = array(array('EQ',"0"),array('EQ',"1"),"OR");//使用一个二维数组就可以解决同一字段多个条件
; a+ z- @% d5 I% b8 h- x# oM("User")->where($where)->select();//查询status等于0或者1的记录/ A ?3 z2 r% g- K H
) C/ a- i7 t2 ^/ X' P2 c( ~( ~ Y, a
3、多个条件里既有AND又有OR的数组查询?比如,查询createdate小于等于2016年4月20日并且status为1或者level为0的记录。
$ B. T( _' m0 q2 w$where['createdate'] = array('EGT',"2016-04-20");+ v% [7 ^# W9 E: [( w( U& i! q
$where['status'] = '1';
2 m4 h q* x" _; K) z$condition['_logic'] = "AND";! L% N: F- B7 B) q# [ f7 E
$map['_complex']=$where; Y5 R8 a. t" k6 n
$map['level']='0';
5 {- a' G9 Y* u2 Z f1 V8 M4 |# x$map['_logic']='OR';8 S; i+ b0 M4 \& |
M("User")->where($map)->select();//查询createdate小于等于2016年4月20日并且status为1或者level为0的记录
1 g8 v; B5 P- h/ w7 [7 Y i g |
|