我有一个用户表。
我有一个用户和角色之间的关系。
角色模型 :
public function users()
{
return $this->belongsToMany(User::class);
}
用户模型 :
public function roles()
{
return $this->belongsToMany(Role::class);
}
我有显示用户的视图,像这样。
<select class="col-12 border mt-2 pt-2" name="reciever">
@foreach($users as $user)
<option value="">{{ $user->name }}</option>
@endforeach
</select>
这就是控制器。
$users = User::all();
return view('Form1.add', compact('users'));
但在视图中,我想只显示具有Admin角色的用户,我该怎么做呢?
这是角色表。
这是用户和角色之间的透视表,像这样。
我只想显示具有Admin角色的用户。
你需要使用 whereHas()
方法来查询你的 User
的记录。Role
记录(通过 roles()
关系)。)
https:/laravel.comdocs7.xeloquent-relationships#querying-relationship-existence。
$adminUsers = User::whereHas('roles', function ($subQuery) {
$subQuery->where('name', 'Admin');
}->get();
或者,您也可以查询 Role
因为它 User
记录(通过 users()
关系)。)
$adminUsers = Role::where('name', 'Admin')->firstOrFail()->users;
任何一种方法都会返回你的 User
与您的管理相关的记录 Role