【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();
相关推荐
范什么特西3 分钟前
redis题目面渣重点
数据库·redis·缓存
Hello_Damon_Nikola17 分钟前
AC7911从入门到精通
开发语言·嵌入式硬件·物联网·php
TDengine (老段)1 小时前
TDengine taosAdapter — 多协议网关详解
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
Nturmoils1 小时前
SQL Server 迁移到 KingbaseES:一次复杂 BI 查询的性能实测
数据库
蒲公英eric1 小时前
从布尔盲注到参数化查询:DVWA SQL 盲注模块完整漏洞分析教程
sql·web安全·ai·dvwa·ai安全·sql 盲注
今天AI了吗2 小时前
MCP 协议打通 AI 与国产数据库,SQL 调优全流程一站式闭环
数据库·人工智能·sql
灯澜忆梦2 小时前
【MySQL11】进阶篇 | 索引_#3使用规则
数据库·sql·mysql·性能优化
名字还没想好☜2 小时前
Go 的 sync.Cond 实战:用条件变量做等待/通知,比忙轮询省 CPU
开发语言·数据库·后端·golang·go
sbjdhjd2 小时前
大三网安秋招核心学习前言(AI 安全 + Web 漏洞 + 内网渗透全考点)
人工智能·网络协议·学习·安全·网络安全·开源·php
wWYy.3 小时前
Mysql:有哪些锁?
数据库·mysql