【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 小时前
MySQL慢查询怎么优化?B+Tree索引原理+MVCC读不阻塞写+EXPLAIN执行计划,从5秒到0.05秒
数据库·mysql
sunxunyong3 小时前
doris用户资源组配置
数据库
Cloud云卷云舒3 小时前
云卷云舒:HaishanDB的AI原生能力主要应用场景
数据库·人工智能·ai-native·haishandb·移动云长期记忆
时间的拾荒人3 小时前
MySQL 视图详解
android·数据库·mysql
qq_366086224 小时前
sql 查询中关于 null 值判断的问题
数据库·sql
测试修炼手册4 小时前
[测试技术] JUnit 6 入门与实战:断言、参数化与 Mockito
数据库·junit·sqlserver
吴声子夜歌4 小时前
Redis 3.x——集群故障转移
java·数据库·redis·集群
名不经传的养虾人4 小时前
从0到1:企业级AI项目迭代日记 Vol.71|系统显示正常,但实际上什么都没发生
数据库·人工智能·ai编程·ai工作流·企业ai
尽兴-4 小时前
企业数据库选型与演进:Oracle、达梦、MySQL 与分库分表实践
数据库·mysql·oracle·分库分表
王莎莎-MinerU5 小时前
MCP 解决的是工具接入,科研 Agent 还缺的是科学证据接口标准化
开发语言·网络·人工智能·深度学习·pdf·c#·php