繁体   English   中英

Laravel:仅从用户表中获取具有“用户”角色的用户

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM