[英]Laravel: Get only users with 'user' role from users table
我有users, roles
表,其中每个user
都在role_user
表中附加了一个role
。 我需要在我的UserController
中获取与role_user
关联的角色名称为“用户”的所有用户(不包括管理员)。
我目前有这个:
UserController:
class UserController extends Controller {
public function index() {
$users = User::all(); // Get here only users with role 'user' in role_user table
return view( 'admin.users.index' )
->with( 'users', $users )
;
}
}
create_users_table:
class CreateUsersTable extends Migration {
public function up() {
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('email')->unique();
$table->string('name');
$table->string('last_name');
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
}
create_roles_table:
class CreateRolesTable extends Migration {
public function up() {
Schema::create('roles', function (Blueprint $table) {
$table->id();
$table->string('name')->unique();
$table->string('description');
$table->timestamps();
});
}
}
create_role_user_table:
class CreateRoleUserTable extends Migration {
public function up() {
Schema::create('role_user', function (Blueprint $table) {
$table->id();
$table->string('user_id')->unique();
$table->integer('role_id')->unsigned();
$table->timestamps();
});
}
}
怎么能做到这一点?
在 User.php Model 中:
public function roles()
{
return $this->belongsToMany('App\Role');
}
在您的 controller 中:
$users = User::whereHas('roles' , function($q){
$q->whereName('user');
})->get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.