Laravel关系与另一个表的关系

时间:2018-04-11 07:17:55

标签: laravel

我有用户表,user_roles表和角色表。

我的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但没有描述。我尝试了belongsToMany,但这给了我Roles值并使用User_roles表格值进行了调整。我可以这样做,反之亦然,所以我得到User_roles表格值,枢轴将是Roles table的描述吗?

目前BelongsToMany关系:

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

3 个答案:

答案 0 :(得分:1)

改为使用hasManyThrough关系:

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

这样您就可以指定中间user_role

答案 1 :(得分:1)

你应该尝试以下解决方案

在用户模型中

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

在控制器中

ID     Fig1     Fig2
A-1    10       -18
A-1    15        20
A-1    25        75
A-2    18        22
A-2    34        70

答案 2 :(得分:0)

在用户模型中

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