【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();
        }
    }


目录
打赏
0
0
0
0
14
分享
相关文章
【MySQL-8】DQL-查询语句全解 [ 基础/条件/分组/排序/分页查询 ](附带代码演示&案例练习)
【MySQL-8】DQL-查询语句全解 [ 基础/条件/分组/排序/分页查询 ](附带代码演示&案例练习)
ES多字段匹配查询时的权重控制
ES多字段匹配查询时的权重控制
896 0
ES多字段匹配查询时的权重控制
mysql sum函数中对两字段做运算时有null时的情况
mysql sum函数中对两字段做运算时有null时的情况
206 0
本周推荐 | 表达式引擎的组合子实现方案
推荐语:本文清晰而详细地介绍了如何使用 Parser 组合子方案,结合 Monad 通过合理的分层、抽象和组合,在性能达标的情况下实现消息场景中函数式的表达式解析。非常具有实践意义,推荐阅读学习! ——大淘宝技术终端开发工程师 闲行
293 0
本周推荐 | 表达式引擎的组合子实现方案
使用 PolarDB 开源版 bloom filter index 实现任意字段组合条件过滤
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力.本文将介绍使用 PolarDB 开源版 bloom filter index 实现任...
159 0
SQL字符串的分组聚合(ZT)
本文转载于T-Sql:字符串分组聚合,也许你还有更简单的办法?         今天在看订阅的RSS的时候,看到这么一个问题:T-Sql中如何对分组的信息进行聚合,并以逗号连接字符;也就是对一个表中的某个字段进行分组,然后对另一个字段聚合,如果表达得不太清楚,请看下面的表。
1000 0
使用 PolarDB 开源版 bloom filter index 实现任意字段组合条件过滤
PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力. 本文将介绍使用 PolarDB 开源版 bloom filter index 实现任意字段组合条件过滤
291 0
【TP5】关于模糊查询
【TP5】关于模糊查询
255 0
【TP5】关于模糊查询
mysql字段的细节(查询自定义的字段[意义:行列转置];UNION ALL;case-when)
mysql字段的细节(查询自定义的字段[意义:行列转置];UNION ALL;case-when)
221 0
mysql字段的细节(查询自定义的字段[意义:行列转置];UNION ALL;case-when)