Thinkphp6 的 where 查询条件 and 和 or 的 操作

tp3.2 来说 or 或者and 的操作可以在一个数组中用_logic 来解决

$where = ['id'=>1,'name'=>'小表','_logic'=>'or']

   

但是tp6的不行。

$where1 = ['id'=>1, 'name'=>'小白'];

$where2 = ['id'=>2, 'name'=>'小黑'];

$where = [$where1, $where2,'_logic'='or']

tp6的and 和 or 可以实现的方法比较多

已知:->where(A)->where(B) 俩个条件关系是 A and B

1.多字段相同的查询条件, 可以使用   |(or) 和  &(and)

    Db::table('think_user')
    ->where('name|title','like','thinkphp%')
    ->where('create_time&update_time','>',0)
    ->find();

 

2.不同字段不同条件,包含 and 和or 的建议使用闭包查询。因为数组条件查询的达不到想要的效果。  

where(C)->whereOR([A, B])->where(d)

A、B条件之间是或的关系,且和c是And关系,和d是or关系

 

只能用闭包查询

    $where = [['nickname','=', '白小白'], ['phone','=','18606995547']];
    $result = Db::name('user_card')
    ->where(['is_delete'=>1])
    ->where(function($query) use ($where){$query->whereOr($where);})
    ->select();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值