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

举报
原来是咔咔 发表于 2022/03/27 00:14:30 2022/03/27
【摘要】 author:咔咔 wechat:fangkangfg 在平时的工作中,我们会遇到一些情况,比如; 最近我在写TP5.1的商城博客,里边就有一个这样的需求 一个条件是校验是否在角色权限里 一个条件就是需要校验的权限 这个时候就不知道sql怎么写了,最会看了一眼文档,发现里边有个whereOr方法  于...

author:咔咔

wechat:fangkangfg

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

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

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

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

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

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

里边有三个参数

第一个是where查询条件

第二个查询字段

第三个就是双条件查询


  
  1. public function query($where = '1 = 1', $field = '*', $whereOr = null)
  2. {
  3. if ($whereOr) { // 存在
  4. return Module::where($where)->field($field)->whereOr($whereOr)->order('pid,sort')->select()->toArray();
  5. } else { //
  6. return Module::where($where)->field($field)->order('pid,sort')->select()->toArray();
  7. }
  8. }

  
  1. 后续测试:
  2. 这个语句明显不是我们想要的
  3. 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 ]
 

只需要给条件加上[]就欧克了


  
  1. public function getModuleGroup($where = '1 = 1',$whereOr = null)
  2. {
  3. if($whereOr){
  4. return Module::where([$where])->whereOr([$whereOr])->order('pid,sort')->select()->toArray();
  5. }else{
  6. return Module::where($where)->order('pid,sort')->select()->toArray();
  7. }
  8. }

文章来源: blog.csdn.net,作者:咔咔-,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/fangkang7/article/details/83866664

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。