TP3.2 多条件查询方法(and,or嵌套查询)

$where["_complex"] = [
    's.approve_status'                         => 0,
    's.grant_status'                           => 1,
    's.approve_status&e.status'                => [1, 0, '_multi' => true],
    's.approve_status&e.status&s.grant_status' => [1, 1, 0, '_multi' => true],
    '_logic'                                   => 'or',
];


tp3.2  or里面加且可以这样用

打印如下:

where 1=1 AND ( s.approve_status = 0 OR ( (s.approve_status = 1) AND (e.status = 0) ) OR ( (s.approve_status = 1) AND (e.status = 1) AND (s.grant_status = 0) ) OR s.grant_status = 1 )
$where["_complex"]   = [
            ['relate_id'=>1,'relate_type' => 2],
            ['relate_id'=>2,'relate_type' => 1],
            '_logic'                => 'or',
        ];


等于
$where["_complex"]   = [
            ['relate_id&relate_type' =>  [1, 2, '_multi' => true]],
            ['relate_id&relate_type' => [2, 1, '_multi' => true]],
            '_logic'                => 'or',
        ];


$where["_complex"]   = [
            'relate_id&relate_type' => [1, 2, '_multi' => true],
            'relate_id&relate_type' => [2, 1, '_multi' => true],
            '_logic'                => 'or',
        ];这种是错误的,key会被覆盖


如果是内部or 外部and

// 假设你的表名为 user
$tableName = 'user';

// 构建查询语句
$query = M($tableName)
    ->where(array(
        '_complex' => array(
            array('uid' => 1, 'did' => 2, '_logic' => 'OR'),
            array('uid' => 2, 'did' => 2, '_logic' => 'OR'),
            '_logic' => 'AND'
        )
    ))
    ->select();

// 执行查询
$result = $query->select();


执行结果:SELECT `uid`,u.name FROM web_user u WHERE ( ( u.uid IN ('40') OR u.did IN ('228') ) AND ( u.uid IN ('40') OR u.did IN ('228') ) ) AND u.company_id = '1' LIMIT 0,15

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值