美文网首页
Laravel实践-sql多重or&and括号优先级处理

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

作者: HBLong | 来源:发表于2017-02-08 22:18 被阅读294次

    今天在做项目的时候发现了一个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);
    

    相关文章

      网友评论

          本文标题:Laravel实践-sql多重or&and括号优先级处理

          本文链接:https://www.haomeiwen.com/subject/wwbbittx.html