ThinkPHP6模型中多组条件逻辑或Or查询的使用

直接进入正题,如我们的查询条件是这样的:

(age > 20 and job_id = 3) or (sex = 1 and age < 20)

上面两组数据之间是 Or 的关系。

可使用两个闭包进行查询,代码如下:

php 复制代码
$map1 = [
            'age'  => 30,
            'sex'       => $id,
        ];
        $map2 = [
            'age'   => 1,
            'sex'     => $id,
        ];

        try{
            $lists= Orders::where(function($query) use($map1){
                $query->where($map1);
            })
                ->whereOr(function ($query) use ($map2){
                    $query->where($map2);
                })
                ->select();
        }catch (\Exception $e){
            echo $e->getMessage();
            return [];
        }

两份个条件组都要放到闭包里,否则会会变成: c1 and c2 or(c3 and c4);

相关推荐
KoiHeng16 分钟前
操作系统简要知识
linux·笔记
Hello.Reader3 小时前
Redis 延迟监控深度指南
数据库·redis·缓存
ybq195133454313 小时前
Redis-主从复制-分布式系统
java·数据库·redis
Johny_Zhao4 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
小毛驴8504 小时前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
好好学习啊天天向上5 小时前
世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程
linux·运维·ubuntu·自动性能优化
好奇的菜鸟6 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
tan180°6 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
满昕欢喜7 小时前
SQL Server从入门到项目实践(超值版)读书笔记 20
数据库·sql·sqlserver
典学长编程7 小时前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome