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);
    原文作者:HBLong
    原文地址: https://www.jianshu.com/p/d7435b8b2179
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞