【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
分享
相关文章
一篇文章讲明白LTE中的各种ID含义
一篇文章讲明白LTE中的各种ID含义
261 0
【TP5】在模板里边输出if写法
【TP5】在模板里边输出if写法
263 0
【TP5】在模板里边输出if写法
【CCCC】L2-005 集合相似度 (25分),维护set数组去重,比较统计
【CCCC】L2-005 集合相似度 (25分),维护set数组去重,比较统计
150 0
【TP5】关于模糊查询
【TP5】关于模糊查询
255 0
【TP5】关于模糊查询
【TP5.1】使用比较运算符查不出数据
【TP5.1】使用比较运算符查不出数据
100 0
【TP5.1】使用比较运算符查不出数据
【TP5】不重复添加数据(案例:专题下的视频管理)
【TP5】不重复添加数据(案例:专题下的视频管理)
209 0
【TP5】不重复添加数据(案例:专题下的视频管理)
【TP5】根据主键ID进行多条数据查询
【TP5】根据主键ID进行多条数据查询
388 0
【TP5】根据主键ID进行多条数据查询
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等