一.最常用的Where 条件表达式格式为:
代码语言:javascript复制$map['字段名'] = array('表达式', '操作条件');
其中 $map 是一个普通的数组变量,可以根据自己需求而命名。上述格式中的表达式实际是运算符的意义:
和 SQL 一样,ThinkPHP运算符不区分大小写,eq 与 EQ 一样。
between、 in 条件支持字符串或者数组,即下面两种写法是等效的:$map['id'] = array('not in','1,5,8');
$map['id'] = array('not in',array('1','5','8'));
二.在TP3中想要or查询
条件可以为:
$condition['grade'] = 1;
$condition['class'] = 3;
$condition['sex'] = 2;
$condtion['_logic'] = 'OR';
$list = M(‘user’)->where($condtion)->findall();
三.下面是TP5中查询方式
在TP5中尝试用where去这么查询发现一直在报错,查了手册之后发现TP5取消了_logic作为查询方式,而是新增了whereOr方法,
代码语言:javascript复制 $condition['grade'] = 1;
$condition['class'] = 3;
$condition['sex'] = 2;
$UserModel = new UserModel;
$list = $UserModel->getlistwhereOr($condition);
四.exp 表达式
上表中的 exp 不是一个运算符,而是一个综合表达式以支持更复杂的条件设置。exp 的操作条件不会被当成字符串,可以使用任何 SQL 支持的语法,包括使用函数和字段名称。
exp 不仅用于 where 条件,也可以用于数据更新,如:
- $data['counter'] = array('exp','counter 1');
五. where map 多条件查询
- $map1=['name', 'like', 'thinkphp%'],
- $map1=['title', 'like', '%thinkphp'],
- $map2=['name', 'like', 'kancloud%'],
- $map2=['title', 'like', '%kancloud'],
- $this->whereOr([ $map1, $map2 ])
where('name','like','thinkphp%');
查询条件就变成 name like 'thinkphp%'
六.另外,V5.0.5 版本开始,like查询支持使用数组
代码语言:javascript复制where('name','like',['%think','php%'],'OR');