Проверить или условие в том, где статья

Я хочу проверить условие OR для переменной role_id в таблице role_mapping. Я хочу проверить, имеет ли user_idrole_id либо "2", либо "3". Пользователь с user_id = 210 имеет role_id 2 и 1. но мой результат запроса печатает "3". Как использовать или условие в запросе Laravel?

Role table user_id role_id 210 2 210 1 $user_role=role_mapping::where('user_id','=',210) ->where('role_id','=','2') ->orwhere('role_id','=','3') ->select('role_mapping.role_id')->first(); echo $user_role->role_id; // print 3
1 ответ

И имеет более высокий приоритет, чем оператор OR, поэтому выполняемый запрос:

WHERE (user_id = 210 AND role_id = 2) OR role_id = 3

пока вы должны работать

WHERE user_id = 210 AND (role_id = 2 OR role_id = 3)

Следующее сделает трюк:

role_mapping::where('user_id','=',210) ->where(function($query) { $query->where('role_id','=','2')->orWhere('role_id','=','3'); }) ->select('role_mapping.role_id')->first();

licensed under cc by-sa 3.0 with attribution.