管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
b、表达式查询
/ h* Y V& j }2 v表达式 含义5 K. ^1 v1 X! |8 J f7 Q
EQ 等于(=)
" U4 p9 x1 q4 t/ cNEQ 不等于(<>)
+ W- R( g7 R2 X6 Y2 h, a- w* j% {+ WGT 大于(>)
8 R* ~7 N/ V1 ?* ~, h( G8 X) zEGT 大于等于(>=)' e% Y$ e+ C3 T: i
LT 小于(<)
0 Z9 N/ B) M' S1 \7 B1 p1 @ELT 小于等于(<=)
, q+ b h6 H! wLIKE 模糊查询. Y1 V& h+ K+ ]' U) c$ o9 ^
[NOT] BETWEEN (不在)区间查询8 O' ~) t9 D) z9 y. G
[NOT] IN (不在)IN 查询
: A! Y2 H0 p1 q% `6 Q ]6 K: hEXP 表达式查询,支持SQL语法* I. S* Y/ C5 p# Q1 x
" J% M& h5 ^1 `- c. n- ^
- l4 z8 }) Y! @& c6 d7 ]
$where['status'] = array("eq",0);//字段就是数组的下标,值就是对应的条件
" ^' c4 `/ ]8 _- O5 d3 GM("User")->where($where)->select();//查询status为0的记录- W( z; e2 h/ r/ [) q9 D
: S; g" A/ c9 [9 c
3、where方法数组查询例子0 X4 l* f3 k' [- X3 u' R
1、如何使用数组实现同一字段多个条件?比如,查询createdate大于等于2016年4月20日并且小于等于2016年4月23日的记录。
3 ?* u4 d' l5 I% m$where['createdate'] = array(array('EGT',"2016-04-20"),array('ELT',"2016-04-23"));//使用一个二维数组就可以解决同一字段多个条件# R: O0 S* U2 `* O' U
M("User")->where($where)->select();//查询createdate大于等于2016年4月20日并且小于等于2016年4月23日的记录
' G; H4 B: C" C+ d
6 O' C0 e' k9 k7 L! u# r1 U+ }2、数组查询使用OR查询?比如,查询status等于0或者1的记录。6 l1 M* j9 b" J2 B- n: B
$where['status'] = array(array('EQ',"0"),array('EQ',"1"),"OR");//使用一个二维数组就可以解决同一字段多个条件
' Y% m7 o9 c% j% x B2 w% CM("User")->where($where)->select();//查询status等于0或者1的记录3 e" J S; i! G2 B
1 \4 ~1 L0 R4 P
3、多个条件里既有AND又有OR的数组查询?比如,查询createdate小于等于2016年4月20日并且status为1或者level为0的记录。( W4 i/ N4 p, j$ S& l
$where['createdate'] = array('EGT',"2016-04-20");
; U% {' z& W' \9 R$ D$where['status'] = '1';/ |% p; a! s! p* ?5 g p
$condition['_logic'] = "AND";& Z4 w) I# t: k# b
$map['_complex']=$where;
$ c+ y+ [, ]2 l; q% D$ }1 G$map['level']='0';
: k6 R" {1 @2 e, k$map['_logic']='OR';( I0 z b+ E; s+ N) r1 e
M("User")->where($map)->select();//查询createdate小于等于2016年4月20日并且status为1或者level为0的记录
7 y7 n5 o l$ M' `% ~ \ |
|