加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2022-11-20 16:41:46)
分类: PHP-GO
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();
————————————————
版权声明:本文为CSDN博主「new_PHP大神」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/my476530/article/details/125203314

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有