关注公众号:青山有路

thinkphp表达式中运算符条件的查询

全部 admin 3年前 (2021-09-10) 1004次浏览 已收录 扫描二维码

TP运算符

SQL运算符 例子 实际查询条件
eq = $map[‘id’] = array(‘eq’,100); 等效于:$map[‘id’] = 100;
neq != $map[‘id’] = array(‘neq’,100); id != 100
gt > $map[‘id’] = array(‘gt’,100); id > 100
egt >= $map[‘id’] = array(‘egt’,100); id >= 100
lt < $map[‘id’] = array(‘lt’,100); id < 100
elt <= $map[‘id’] = array(‘elt’,100); id <= 100
like like $map<‘username’> = array(‘like’,’Admin%’); username like ‘Admin%’
between between and $map[‘id’] = array(‘between’,’1,8′); id BETWEEN 1 AND 8
not between not between and $map[‘id’] = array(‘not between’,’1,8′); id NOT BETWEEN 1 AND 8
in in $map[‘id’] = array(‘in’,’1,5,8′); id in(1,5,8)
not in not in $map[‘id’] = array(‘not in’,’1,5,8′); id not in(1,5,8)
and(默认) and $map[‘id’] = array(array(‘gt’,1),array(‘lt’,10)); (id > 1) AND (id < 10)
or or $map[‘id’] = array(array(‘gt’,3),array(‘lt’,10), ‘or’); (id > 3) OR (id < 10)
xor(异或) xor 两个输入中只有一个是true时,结果为true,否则为false,例子略。 1 xor 1 = 0
exp 综合表达式 $map[‘id’] = array(‘exp’,’in(1,3,8)’); $map[‘id’] = array(‘in’,’1,3,8′);
其他查询

1、不同字段的查询条件

$map[‘name|title’] = ‘thinkphp’; 等同于  name= ‘thinkphp’ OR title = ‘thinkphp’

2、不同字段不同的查询条件

 $map[‘status&title’] =array(‘1′,’thinkphp’,’_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’

3、区间查询

 $map[‘id’] = array(array(‘gt’,1),array(‘lt’,10)) ; 等同于  (`id` > 1) AND (`id` < 10)

 $map[‘id’] = array(array(‘gt’,3),array(‘lt’,10), ‘or’) ; 等同于  (`id` > 3) OR (`id` < 10)

4、模糊查询

$map[‘name’]  = array(array(‘like’,’%a%’), array(‘like’,’%b%’), array(‘like’,’%c%’), ‘ThinkPHP’,’or’); 等同于 (`name` LIKE ‘%a%’) OR (`name` LIKE ‘%b%’) OR (`name` LIKE ‘%c%’) OR (`name` = ‘ThinkPHP’)

 

组合查询  

 

1、字符串模式查询

$map[‘id’] = array(‘neq’,1);
$map[‘name’] = ‘ok’;
$map[‘_string’] = ‘status=1 AND score>10’;

等同于 ( `id` != 1 ) AND ( `name` = ‘ok’ ) AND ( status=1 AND score>10 )

2、请求字符串查询方式

$map[‘id’] = array(‘gt’,’100′);
$map[‘_query’] = ‘status=1&score=100&_logic=or’;

等同于 `id`>100 AND (`status` = ‘1’ OR `score` = ‘100’)

3、复合查询

$where[‘name’]  = array(‘like’, ‘%thinkphp%’);
$where[‘title’]  = array(‘like’,’%thinkphp%’);
$where[‘_logic’] = ‘or’;
$map[‘_complex’] = $where;
$map[‘id’]  = array(‘gt’,1);

等同于 ( id > 1) AND ( ( name like ‘%thinkphp%’) OR ( title like ‘%thinkphp%’) )

 


版权所有丨如未注明 , 均为原创 , 转载请注明thinkphp表达式中运算符条件的查询
喜欢 (6)