[英]orWhere returns always true
我想隐藏一个只为具有“admin”或“writer”角色的用户显示的 div,不需要两者都显示,如果用户具有这些角色之一,则使用变量$check变为 true,所以我尝试在视图控制器中使用以下逻辑来做到这一点:
public function index(){
$check = false;
if(auth()->user() != null){
$check = auth()->user()->roles()
->where('name', 'admin')
->orWhere('name','writer')
->exists();
dd(auth()->user()->roles()->Where('name','writer')->exists());
// dd($check);
}
return view('albums.index', [
'albums' => Album::latest()->filter(request(['tag','search','label','date']))->paginate(6),
'check' => $check,
]);
}
问题是变量$check总是为每个用户返回 true,我删除了查询的 orWhere() 部分,它变成了它应该是的 false,我想也许用户以某种方式得到了默认情况下,'writer' 角色,尽管它没有显示在角色用户模块的数据透视表上,所以我做了一个快速转储并死掉以确保它返回 false
我确定OrWhere()是使用其他 DD 的原因,我检查了文档,我认为我得到了查询的语法,对吗?
请尝试使用此查询:
public function index(){
$check = false;
if(auth()->user() != null){
$check = auth()->user()->roles()
->where(function($query){
$query->where('name','admin');
$query->where('name', '!=','writer');
})
->orWhere(function($query){
$query->where('name', '!=','admin');
$query->where('name','writer');
})->exists();
dd($check);
}
return view('albums.index', [
'albums' => Album::latest()->filter(request(['tag','search','label','date']))->paginate(6),
'check' => $check,
]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.