对同一表中多个字段的查询,在thinkPHP中使用数组条件进行查询,有三个好处,第一可以批量设置多个查询字段,第二可以设置多个查询条件,第三结构化你的代码,让代码更具可读性。数组条件查询有简单数组查询、数组表达式查询,一般使用$map保存数组条件。
例如需要查询user表中用户名(username)为“xifengli”并且状态(status)为正常(1)的数据。
$map['username'] = 'xifengli'; $map['status'] = 1;
这样就写好了数组。代入where条件。
Db::name('user')->where($map)->select();
例如需要查询user表中用户名(username)中包含“xifengli”字符的并且状态为不在黑名单(0)的数据的数据
$map['username'] = ['like','%xifengli%']; $map['status'] = ['<>',0];
上面两种属于基础类型,描述的是多个字段的并列条件。现在的问题是同一字段的并列条件和或者条件如何处理,也就是本文标题中的同一字段多个条件。
例如现在需要查询用户表中状态为不在黑名单并且状态不为临时(2)的用户。
$map['status'] = array(['<>',0],['<>',2],'and');
又例如现在需要查询用户表中状态为不在黑名单或者状态为正常(1)的用户。
$map['status'] = array(['<>',0],['=',1],'or');
好了,上面三种情况就是ThinkPHP常用数组条件查询。