Laravel - 我有一个具有不同角色的用户模型。如何在具有特定角色的用户之间建立关系? [关闭]

Posted

技术标签:

【中文标题】Laravel - 我有一个具有不同角色的用户模型。如何在具有特定角色的用户之间建立关系? [关闭]【英文标题】:Laravel - I have a User model that has different roles. How to make a relationship between users with certain roles? [closed] 【发布时间】:2016-09-10 21:47:38 【问题描述】:

我在 Laravel 5.2 中有一个用户模型和一个角色模型。在我的角色中,我有学生和老师。每个学生都有很多老师,反之亦然。如何链接它们?

【问题讨论】:

这个主题在 laravel 文档 laravel.com/docs/5.2/eloquent-relationships987654321@ 中有很好的介绍 但我没有 2 个模型。我只有一个具有不同角色的用户。我需要用户按照一定的角色来存储用户。 【参考方案1】:

首先,你需要创建三个表roles - users - role_user 见下图:

角色表:

    Schema::create('roles', function (Blueprint $table) 
        $table->increments('id');
        $table->string('name');
    );

然后 用户表

    Schema::create('users', function (Blueprint $table) 
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->rememberToken();
        $table->timestamps();
    );

用户角色表

Schema::create('user_role', function (Blueprint $table) 
    $table->bigInteger('user_id')->unsigned();
    $table->integer('role_id')->unsigned();
    $table->foreign('user_id')
        ->references('id')->on('users');
    $table->foreign('role_id')
        ->references('id')->on('roles');
);

创建角色模型:

class Role extends Model

    protected $table = 'roles';

    public $timestamps = false;

    public function users() 
        return $this->belongsToMany(User::class, 'user_role');
    

然后将角色关系添加到用户模型中

class User extends Authenticatable 

    protected $table = 'users';

    public function roles() 
        return $this->belongsToMany(Role::class, 'user_role');
    

给用户一个角色,

$user = User::findOrFail(1); //lets say for user 1
$user->roles()>attach(Role::where('name', 'Teacher')->first());

【讨论】:

这不是我要问的,我已经这样做了 查看attach()的最后一个例子 再说一次,这不是我要问的。我需要角色为学生的用户与角色为老师的用户建立多对多关系。 能否请您一遍又一遍地阅读解决方案... $table->foreign('user_id') ->references('id')->on('users'); $table->foreign('role_id') ->references('id')->on('roles');这就是两个不同角色的用户之间建立联系的原因吗?

以上是关于Laravel - 我有一个具有不同角色的用户模型。如何在具有特定角色的用户之间建立关系? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

具有相同角色的身份验证用户与Guard Laravel相同

Laravel 数据库模型自身之间的关系

Laravel 多对多同步与附加列

Laravel 混合获取 Eloquent 急切加载嵌套多个模型

获取所有在 Laravel 中具有角色的用户

laravel-如何在 5.1 中使用 zizaco 获得具有所有角色和所有权限的用户?