如何在laravel的用户表中只显示管理员姓名

问题描述 投票:-1回答:1

我有一个用户表。

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

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

这是角色表。

role table

这是用户和角色之间的透视表,像这样。

pivot table between users and roles

我只想显示具有Admin角色的用户。

php laravel laravel-5 relation
1个回答
1
投票

你需要使用 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

© www.soinside.com 2019 - 2024. All rights reserved.