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

wechat:fangkangfg
在平時的工作中,我們會遇到一些情況,比如;
最近我在寫TP5.1的商城博客,里邊就有一個這樣的需求
一個條件是校驗是否在角色權(quán)限里
一個條件就是需要校驗的權(quán)限
這個時候就不知道sql怎么寫了,最會看了一眼文檔,發(fā)現(xiàn)里邊有個whereOr方法
于是就對這個方法進行了封裝
里邊有三個參數(shù)
第一個是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();
}
}
后續(xù)測試:
這個語句明顯不是我們想要的
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();
}
}
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。