author:咔咔
wechat:fangkangfg
在平时的工作中,我们会遇到一些情况,比如;
一个条件是校验是否在角色权限里
一个条件就是需要校验的权限
这个时候就不知道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();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。