【问题标题】:how to show just Admin name from users table in laravel如何在laravel中仅显示用户表中的管理员名称
【发布时间】:2020-08-28 09:40:45
【问题描述】:

我有一个用户表:

我在用户和角色之间有一个关系:

角色模型:

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'));

但在视图中,我只想显示具有管理员角色的用户,我该怎么做?

这是角色表:

这是用户和角色之间的数据透视表,如下所示:

我只想显示具有管理员角色的用户。

【问题讨论】:

    标签: php laravel laravel-5 relation


    【解决方案1】:

    您需要使用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();
    

    或者,您可以查询RoleUser 记录(通过users() 关系):

    $adminUsers = Role::where('name', 'Admin')->firstOrFail()->users;
    

    任何一种方法都会返回与您的管理员 Role 关联的 User 记录

    【讨论】:

      猜你喜欢
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多