提问者:小点点

与另一个表的关系中的Laravel关系


我有用户表、用户角色表和角色表。

我的user_roles表:

id, role_id, user_id

我的角色表:

id, name, description, created_at, updated_at

我的用户表:

id, first_name, last_name, user_name, avatar, account_status, email, password, remember_token, created_at, updated_at, deleted_at

现在,我试图让登录用户的角色包括角色描述,但似乎无法让它工作。

在我的用户模型中,我有这样的:

public function roles()
{
    return $this->hasOne(User_roles::class, 'role_id', 'id');
}

这给了我User_role,但没有描述。我尝试了所属的属性,但这给了我Roles值,并与User_roles表valus枢轴。反之亦然,这样我就可以得到User_roles表值和透视将是Roles表的描述吗?

目前属于婚姻关系:

    public function roles()
    {
        return $this->belongsToMany(Roles::class, 'user_roles', 'id', 'id');
    }

共3个答案

匿名用户

改用hasManyThrough关系:

https://laravel.com/docs/5.6/eloquent-relationships#has-many-through

通过这种方式,您可以指定中间用户角色

匿名用户

你应该尝试以下解决方案

在用户模型中

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

内部控制器

$user = User::find($user_id);
$roles = $user->roles;

匿名用户

在用户模型中

public function roles()
{
return $this->belongsToMany('App\Role', 'role_user', 'user_id', 'role_id');
}