TP5 多条件whereOr查询
问题背景:最近在用ThinkPHP 5开发项目的过程中,发现根据筛选条件做or查询的时候,连贯操作不可以使用where进行条件查询了。
首先列出一个user数据表的信息:
uid |
uname |
grade(年级) |
class(班级) |
sex(性别) |
1 |
1号 |
1 |
2 |
1 |
2 |
2号 |
1 |
1 |
2 |
3 |
3号 |
3 |
3 |
2 |
4 |
4号 |
4 |
2 |
1 |
5 |
5号 |
2 |
5 |
1 |
6 |
6号 |
1 |
6 |
2 |
7 |
7号 |
1 |
1 |
1 |
8 |
8号 |
2 |
3 |
1 |
9 |
9号 |
2 |
2 |
1 |
10 |
10号 |
3 |
1 |
2 |
数据表展现了10位同学的年级、班级、性别信息
现在要查询数据为
grade=1 or class= or sex=2
在TP3中想要or查询
条件可以为:
$condition['grade'] = 1;
$condition['class'] = 3;
$condition['sex'] = 2;
$condtion['_logic'] = 'OR';
$list = M(‘user’)->where($condtion)->findall();
然后在TP5中尝试用where去这么查询发现一直在报错,查了手册之后发现TP5取消了_logic作为查询方式,而是新增了whereOr方法,下面是TP5中查询方式
User.php
<?php namespace app\index\controller; use app\index\model\UserModel; class User { public function index() { $condition['grade'] = 1; $condition['class'] = 3; $condition['sex'] = 2; $UserModel = new UserModel; $list = $UserModel->getlistwhereOr($condition); print_r($list); } }
UserModel.php
<?php namespace app\index\model; use app\common\model\CommonModel; use think\Db; use think\Model; class UserModel extends CommonModel { public function __construct(){ parent::__construct(); } protected $name = 'User'; public function getlistwhereOr($condition) { $list =Db::name($this->name)->whereOr($condition)->select(); return $list; } }
执行User.php 发现打印出来的数据就是我们要的筛选数据,
总结:TP5相比TP3中更新了很多我们经常用到的查询方式,而且写法更人性化,需要经常的去整理查看这些新方法
by as
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架