【TP5.1】whereOr的用法(雙條件查詢)

author:咔咔php

wechat:fangkangfgsql

 

在平時的工做中,咱們會遇到一些狀況,好比;測試

最近我在寫TP5.1的商城博客,裏邊就有一個這樣的需求code

一個條件是校驗是否在角色權限裏

一個條件就是須要校驗的權限

這個時候就不知道sql怎麼寫了,最會看了一眼文檔,發現裏邊有個whereOr方法 文檔

 

因而就對這個方法進行了封裝get

裏邊有三個參數博客

第一個是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 ]

 

這種的纔是咱們須要的io

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 ]

只須要給條件加上[]就歐克了function

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();
        }
    }
相關文章
相關標籤/搜索