php - 如何在laravel中仅显示用户表中的管理员名称
问题描述
我有一个用户表:
我在用户和角色之间有一个关系:
好榜样 :
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'));
但在视图中,我只想显示具有管理员角色的用户,我该怎么做?
这是角色表:
这是用户和角色之间的数据透视表,如下所示:
我只想显示具有管理员角色的用户。
解决方案
您需要使用该whereHas()
方法根据User
分配Role
的记录(通过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;
任何一种方法都会返回User
与您的管理员关联的记录Role
推荐阅读
- knockout.js - 在 KnockOut JS 中根据日期显示数据导致错误的顺序
- javascript - JavaScript:函数未返回最大素数
- docker - docker上的元数据库没有暴露
- c# - label.Text = ComboBox.SelectedText(); 总是为空?
- angular - 同时设置焦点在顶部导航和侧面导航(angular2+)
- python - RuntimeError: OperationalError: (2003, Can't connect to MySQL server on 'IPaddress of the instance'
- java - 如何在 JPQL 中选择随机 10 条记录?
- python - 你如何使用 tkinter 输入框来制作变量?
- java - 响应已经提交。无法将响应发送到另一个 URL
- azure - 将 WebJob 发布到 Azure 会覆盖网站 NLog.config