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

author:咔咔

wechat:fangkangfg

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

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

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

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

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

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

里边有三个参数

一个是where查询条件

第二个查询字段

第三个就是双条件查询

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

相关文章

(1)创建数据表: CREATE TABLE IF NOT EXISTS `think_form` ...
组合查询的主体还是采用数组方式查询,只是加入了一些特殊的...
(1)创建模版:/App/Home/View/Form/edit.html   <FORM m...
自定义配置文件user.php: <?php return array(    \'se...
在一些成熟的CMS系统中,后台一般都包含一个配置中心(如织梦...
废话不多说先上图预览下,即本博客的分页; 这个分页类是在...