ThinkCMF多条件查询sql where条件判断
ThinkCMF多条件查询sql where条件判断
TP中 Where 条件表达式格式为:
$map['字段名'] = array('表达式', '操作条件');
$map['status'] = array('=', '1');
$map['title'] = array('like', '%测试%');
$map['delete_time'] = array('=', '0');
实际跑起来不知道为什么就变成
where `status` in ('=', '1') and `title` in ('like', '%测试%') and `delete_time` in ('=', '0')
无奈之下换种写法:
$map = array();
$map[] = ['post_status', '=', 1];
$map[] = ['delete_time', '=', 0];
if ( $word != '' ){
$map[] = ['post_title', 'like', '%'.$word.'%'];
}
1
2
3
4
5
6
这个才是我要的结果
Db::name('recruit')
->where($map)
->order('is_top DESC')
->order('published_time DESC')
->paginate(20);
---------------------
作者:唐帅3211
来源:CSDN
原文:https://blog.csdn.net/ts3211/article/details/91414851
版权声明:本文为博主原创文章,转载请附上博文链接!
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');
---------------------
作者:我是高手高手高高手
来源:CSDN
原文:https://blog.csdn.net/haibo0668/article/details/78203170
版权声明:本文为博主原创文章,转载请附上博文链接!