在 where 子句中检查或条件
check or condition in where clause
我想检查 OR 变量 role_id 在 role_mapping 中的条件table。我想检查 user_id 是否有 role_id '2' 或 '3'。 user_id=210 的用户有 role_id 2 和 1。但我的查询结果打印“3”。如何在Laravel查询中使用or条件?
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
AND 运算符的优先级高于 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();
我想检查 OR 变量 role_id 在 role_mapping 中的条件table。我想检查 user_id 是否有 role_id '2' 或 '3'。 user_id=210 的用户有 role_id 2 和 1。但我的查询结果打印“3”。如何在Laravel查询中使用or条件?
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
AND 运算符的优先级高于 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();