thinkphp 复合查询

            $keywords_array=explode(' ',$keywords);
            $like_where=array();
            foreach ($keywords_array as $key => $value) {
                if($value!=' '){
                $like_where[]=array('like','%'.$value.'%');
                }
            }
            $like_where[]=$keywords;
            $like_where[]='or';
            $kcondition['goods.goods_name']=$like_where;
            $kcondition['goods.keywords']=$like_where;
			$kcondition['_logic'] = 'or';
			$condition['_complex'] = $kcondition;
        	$condition['goods.status']=array('in','1,2');
            $condition['goods.is_del']=0;             
            

打印出来的数据 

array(3) {
  ["_complex"] => array(3) {
    ["goods.goods_name"] => array(3) {
      [0] => array(2) {
        [0] => string(4) "like"
        [1] => string(17) "%与秋洗碗巾%"
      }
      [1] => string(15) "与秋洗碗巾"
      [2] => string(2) "or"
    }
    ["goods.keywords"] => array(3) {
      [0] => array(2) {
        [0] => string(4) "like"
        [1] => string(17) "%与秋洗碗巾%"
      }
      [1] => string(15) "与秋洗碗巾"
      [2] => string(2) "or"
    }
    ["_logic"] => string(2) "or"
  }


  ["goods.status"] => array(2) {
    [0] => string(2) "in"
    [1] => string(3) "1,2"
  }
  ["goods.is_del"] => int(0)
}
string(283) "SELECT COUNT(*) AS tp_count FROM `goods` WHERE (  ( goods.goods_name LIKE '%与秋洗碗巾%' OR goods.goods_name = '与秋洗碗巾' ) OR ( goods.keywords LIKE '%与秋洗碗巾%' OR goods.keywords = '与秋洗碗巾' ) ) AND goods.status IN ('1','2') AND goods.is_del = 0 LIMIT 1  "

观察打印出来的数据,可以发现["_logic"] => string(2) "or"是用来连接goods.goods_name和goods_keywords 的,而两个字段分别又带有一个or,这个or是用来连接每个字段里面的条件的,比如

    ["goods.goods_name"] => array(3) {
      [0] => array(2) {
        [0] => string(4) "like"
        [1] => string(17) "%与秋洗碗巾%"
      }
      [1] => string(15) "与秋洗碗巾"
      [2] => string(2) "or"
    }

表示 goods.goods_name LIKE '%与秋洗碗巾%' OR goods.goods_name = '与秋洗碗巾'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值