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

Я хочу проверить условие 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.