首页 » php » 正文

总结:Thinkphp中的组合查询

          今天小涛做了个组合查询,就是在站内进行标题和内容字段查询,那么字段之间的默认逻辑关系是 逻辑与 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′

 

这样就可以根据自己的实际要求进行组合查询条件,基本上可以满足要求。

发表评论