Laravel实践-sql多重or&and括号优先级处理

今天在做项目的时候发现了一个bug,具体就是数据库语句
user_id = ? or user_id = '' and oid = ?
当用户ID为具体值或者为空的都要筛选进行,但是发现要想符合效果必须改成
(user_id=? or user_id='') and oid = ?
原语句对应的laravel语句是

$select->where('user_id', '=', $user_id);
$select->orwhere('user_id', '=', '');
$select->where('oid', '=', $oid);

于是改成

$select -> where(function($query) use ($user_id) {
                    $query -> where('user_id', '=', $user_id);
                    $query -> orWhere('user_id', '=', '');
                });
$select->where('oid', '=', $oid);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,739评论 18 399
  • 姓名:于川皓 学号:16140210089 转载自:https://baike.baidu.com/item/sq...
    道无涯_cc76阅读 1,972评论 0 2
  • 原文链接 必备品 文档:Documentation API:API Reference 视频:Laracasts ...
    layjoy阅读 8,619评论 0 121
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,497评论 0 17
  • 我渴望未来的生活,在自己喜欢的城市,经营一家自己的素食主题餐厅,开着一家瑜伽馆,经营着一家民宿,与志同道合者交流阅...
    曹小薇阅读 142评论 0 0