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

2017-02-08  本文已影响294人  HBLong

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

猜你喜欢

热点阅读