TP5.1whereOr的用法(双条件查询)

网友投稿 894 2022-05-30

author:咔咔

wechat:fangkangfg

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

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

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

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

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

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

【TP5.1】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();

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【愚公系列】2022年02月 U3D全栈班 010-预制件
下一篇:Docker 的优点
相关文章