【PHP】where和whereOr一起复杂查询示例

在ThinkPHP 5 中,wherewhereOr 方法可以一起使用以实现复杂的查询条件。以下是一个示例:

php 复制代码
// 接收的参数
$param = $this->request->param();

// 实例化
$query = new UserModel();

// 关联表
$query->with(['collect' => function($collect_query) use ($user_id) {
    $collect_query->field('id,user_id');
    $collect_query->where('user_id', user_id);
}]);

// 查询条件
$query->where(['status' => 1])

// 可筛选逗号分割的
$query->where("FIND_IN_SET({$user_id},parent_ids)")

// 价格区间最小值
if(isset($param['min_money']) && is_numeric($param['min_money'])){
    $query->where(function ($query) use ($param) {
        $query->where('price_min', '>=', $param['min_money'])->orWhere('price_max', '>=', $param['min_money']);
    });
}

// 价格区间最大值
if(isset($param['max_money']) && is_numeric($param['max_money'])){
    $query->where(function ($query) use ($param) {
        $query->where('price_min', '<', $param['max_money'])->orWhere('price_max', '<', $param['max_money']);
    });
}

// 查询结果
$list = $query->field(TaskModel::HALLLIST)
    ->order($sort)
    ->select();
相关推荐
JIngJaneIL4 分钟前
基于Java+ vueOA工程项目管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
鱼找水需要时间9 分钟前
国产银河麒麟系统安装mongodb副本集
数据库·mongodb
Logic10117 分钟前
《数据库运维》 郭文明 实验5 数据库性能监视与优化实验核心操作与思路解析
运维·数据库·sql·mysql·计算机网络技术·形考作业·国家开放大学
刺客xs24 分钟前
Qt ---- Qt6.5.3 连接MySQL数据库
数据库·qt·mysql
TiDB 社区干货传送门34 分钟前
“医疗专业应用+分布式数据底座”:平凯数据库与金唐软件全链路赋能医疗国产化与数字化转型
数据库·分布式
德彪稳坐倒骑驴35 分钟前
SQL刷题笔记-我没做出来的题目
数据库·笔记·sql
GottdesKrieges41 分钟前
通过obd升级OceanBase数据库
数据库·oracle·oceanbase
TiDB 社区干货传送门1 小时前
【附操作指南】从 Oceanbase 增量数据同步到 TiDB
linux·服务器·数据库·tidb·oceanbase
光影少年1 小时前
postgrsql和mysql区别?
数据库·mysql·postgresql
云和数据.ChenGuang1 小时前
`post_max_size`、`max_execution_time`、`max_input_time` 是 **PHP 核心配置参数**
开发语言·mysql·php·zabbix·mariadb