【TP5.1】whereOr的用法(双条件查询)

简介: 【TP5.1】whereOr的用法(双条件查询)

author:咔咔


wechat:fangkangfg


在平时的工作中,我们会遇到一些情况,比如;


最近我在写TP5.1的商城博客,里边就有一个这样的需求


一个条件是校验是否在角色权限里


一个条件就是需要校验的权限


image.png


这个时候就不知道sql怎么写了,最会看了一眼文档,发现里边有个whereOr方法


于是就对这个方法进行了封装


里边有三个参数


第一个是where查询条件


第二个查询字段


第三个就是双条件查询

image.png



 

public function query($where = '1 = 1', $field = '*', $whereOr = null)
      {
          if ($whereOr) { // 存在
              return Module::where($where)->field($field)->whereOr($whereOr)->order('pid,sort')->select()->toArray();
          } else { //
              return Module::where($where)->field($field)->order('pid,sort')->select()->toArray();
          }
      }

后续测试:

这个语句明显不是我们想要的

SELECT * FROM `tp_module` WHERE  `module_id` IN (120,121)  AND `module` = 1277 OR `module` = 1278  OR `is_control_auth` = 1279 ORDER BY `pid`,`sort` [ RunTime:0.002929s ]

这种的才是我们需要的


SELECT * FROM `tp_module` WHERE  ( `module_id` IN (120,121) AND `module` = 1277 ) OR ( `module` = 1278 AND `is_control_auth` = 1279 ) ORDER BY `pid`,`sort` [ RunTime:0.003906s ]

只需要给条件加上[]就欧克了


 

public function getModuleGroup($where = '1 = 1',$whereOr = null)
    {
        if($whereOr){
            return Module::where([$where])->whereOr([$whereOr])->order('pid,sort')->select()->toArray();
        }else{
            return Module::where($where)->order('pid,sort')->select()->toArray();
        }
    }


相关文章
|
2月前
|
C#
C#动态查询:巧用Expression组合多条件表达式
在C#中,利用`Expression`类和`AndAlso`、`OrElse`方法,可以组合两个`Expression<Func<T, bool>>`以实现动态多条件查询。该方法通过构建表达式树,方便地构建复杂查询。示例代码展示了如何创建表达式树,分别检查年龄大于等于18和姓名为"John"的条件,并使用`AndAlso`组合这两个条件,最终编译为可执行的委托进行测试。
|
12月前
|
PHP 数据库
tp5查询指定字段
tp5查询指定字段
【TP5】在模板里边输出if写法
【TP5】在模板里边输出if写法
226 0
【TP5】在模板里边输出if写法
|
2月前
|
关系型数据库 分布式数据库 PolarDB
使用 PolarDB 开源版 bloom filter index 实现任意字段组合条件过滤
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力.本文将介绍使用 PolarDB 开源版 bloom filter index 实现任...
72 0
|
存储 SQL 并行计算
使用 PolarDB 开源版 bloom filter index 实现任意字段组合条件过滤
PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力. 本文将介绍使用 PolarDB 开源版 bloom filter index 实现任意字段组合条件过滤
247 0
【TP5】关于模糊查询
【TP5】关于模糊查询
212 0
【TP5】关于模糊查询
【TP5】查询返回结果
【TP5】查询返回结果
143 0
【TP5】查询返回结果
【TP5.1】使用比较运算符查不出数据
【TP5.1】使用比较运算符查不出数据
83 0
【TP5.1】使用比较运算符查不出数据
【TP5】不重复添加数据(案例:专题下的视频管理)
【TP5】不重复添加数据(案例:专题下的视频管理)
173 0
【TP5】不重复添加数据(案例:专题下的视频管理)