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

你可能感兴趣的:(thinkphp,php,tp,thinkphp)