如何仅显示 laravel 中用户 table 的管理员名称
how to show just Admin name from users table in laravel
我有一个用户 table:
而且我在用户和角色之间存在关联:
榜样:
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'));
但在视图中,我只想显示具有管理员角色的用户,我该怎么做?
这是角色 table :
这是用户和角色之间的关键点 table,如下所示:
我只想显示具有管理员角色的用户。
您需要使用 whereHas()
方法根据分配的 Role
条记录查询您的 User
条记录(通过 roles()
关系):
https://laravel.com/docs/7.x/eloquent-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;
任何一种方法都会 return 您 User
与您的管理员关联的记录 Role
我有一个用户 table:
而且我在用户和角色之间存在关联:
榜样:
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'));
但在视图中,我只想显示具有管理员角色的用户,我该怎么做?
这是角色 table :
这是用户和角色之间的关键点 table,如下所示:
我只想显示具有管理员角色的用户。
您需要使用 whereHas()
方法根据分配的 Role
条记录查询您的 User
条记录(通过 roles()
关系):
https://laravel.com/docs/7.x/eloquent-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;
任何一种方法都会 return 您 User
与您的管理员关联的记录 Role