今天小涛做了个组合查询,就是在站内进行标题和内容字段查询,那么字段之间的默认逻辑关系是 逻辑与 AND ,但是用下面的规则可以更改默认的逻辑判断,例如下面的查询条件:
$value = trim($_POST[‘searchValue’]);
$case[‘title’] = array(‘like’, ‘%’.$value.’%’);
$case[‘content’] = array(‘like’, ‘%’.$value.’%’);
$case[ ‘_logic’] = ‘or’;
$where[‘_complex’] = $case;
$Model->where($where)->select();
比如我输入“111”最后得到的查询语句是:( `title` LIKE ‘%111%’ ) OR ( `content` LIKE ‘%111%’ )
如果不加$case[ ‘_logic’] = ‘or’; 查询语句就变成:( `title` LIKE ‘%111%’ ) AND( `content` LIKE ‘%111%’ )
默认是and查询,数组条件还可以和字符串条件混合使用,例如:
$User = M( “User” ); // 实例化 User 对象
$map[‘id’] = array( ‘neq’ ,1);
$map[ ‘name’] = ‘ok’;
$map[‘_string’] = ‘status=1 AND score>10’ ;
$User->where($map)->select();
最后得到的查询条件就成了:
( `id` != 1 ) AND ( `name` = ‘ok’ ) AND ( status=1 AND score>10 )
新版还可以支持一种特殊的条件查询,前提是简单的条件相等判断。
$map[‘_query’] = ‘status=1&score=100&_logic=or’ ;
得到的查询条件是: `status` = ‘1’ OR `score` = ‘100’
这样就可以根据自己的实际要求进行组合查询条件,基本上可以满足要求。