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