Thinkphp6 的 where 查询条件 and 和 or 的 操作
2023-03-29 23:03:03
1774
{{single.collect_count}}

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();

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}