管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
b、表达式查询$ H" L+ R0 \2 u- M* S& Y
表达式 含义
+ T+ B* n# r" l6 o- [! R* gEQ 等于(=)# |& V! C! E9 a8 W# t' L
NEQ 不等于(<>)3 t+ {! s2 R4 l3 Q) F$ c
GT 大于(>)% I0 q1 _! j+ x2 g( t
EGT 大于等于(>=)
& p7 U3 P! ]1 O- x: _LT 小于(<)8 ~ L8 W' [: X, K/ X
ELT 小于等于(<=)
- B5 i* |7 y* m% ^/ q7 Q* l1 WLIKE 模糊查询* r9 H. _2 j& s, i# ?3 q6 `
[NOT] BETWEEN (不在)区间查询
3 R5 }& ]+ x; h* E$ F[NOT] IN (不在)IN 查询
& W# b+ a* v3 H, L1 t% ?3 YEXP 表达式查询,支持SQL语法; g/ c- X& U% K# x1 k
1 m' R+ O* _% r: H% K1 m ?% ~3 P
- x- F% c4 m& ?6 ~
$where['status'] = array("eq",0);//字段就是数组的下标,值就是对应的条件. I) ~9 A, [# V* C4 b0 M* }/ ]' M" ?
M("User")->where($where)->select();//查询status为0的记录, \6 K, @9 |: Q7 p& a6 f
% h8 g& u; M4 G3、where方法数组查询例子! ]0 j; u: H8 @$ I, c5 A7 P
1、如何使用数组实现同一字段多个条件?比如,查询createdate大于等于2016年4月20日并且小于等于2016年4月23日的记录。
4 K2 a4 B1 F# W6 S+ `$where['createdate'] = array(array('EGT',"2016-04-20"),array('ELT',"2016-04-23"));//使用一个二维数组就可以解决同一字段多个条件
8 N$ r3 A1 \/ A& ^) L- _M("User")->where($where)->select();//查询createdate大于等于2016年4月20日并且小于等于2016年4月23日的记录) O, F3 |/ ]3 K3 u, x) Y) F
7 c$ S2 \0 g- S2 u: j% w
2、数组查询使用OR查询?比如,查询status等于0或者1的记录。
$ f; Z/ L8 a1 t, T7 t* P& K$where['status'] = array(array('EQ',"0"),array('EQ',"1"),"OR");//使用一个二维数组就可以解决同一字段多个条件4 {, ?! @ I6 A4 W# ?# e
M("User")->where($where)->select();//查询status等于0或者1的记录
4 `& T6 t7 O5 ^, `3 B3 Z/ [: z2 B# F5 x6 P' Q1 D# d2 i! N
3、多个条件里既有AND又有OR的数组查询?比如,查询createdate小于等于2016年4月20日并且status为1或者level为0的记录。
) E4 P Y/ y# O7 I: |$where['createdate'] = array('EGT',"2016-04-20");
* ]( @ y* t. ^- r# J$where['status'] = '1';% u# M* t' x. H; H" R# p
$condition['_logic'] = "AND";) C6 O8 F# q5 b. Q. I
$map['_complex']=$where;( z' K) u7 N8 g* i/ y
$map['level']='0';1 t5 |$ V% y8 e1 I7 Y( \
$map['_logic']='OR'; k$ m3 W3 j: I' p9 P0 _* l
M("User")->where($map)->select();//查询createdate小于等于2016年4月20日并且status为1或者level为0的记录
! O3 W" X3 M& M) N3 |, C |
|