Laravel 5.4 Eloquent 关系问题

Laravel 5.4 Eloquent Relationship Issue

我需要澄清我对 Eloquent 关系的疑虑。我有 2 个模型用户(Laravel 附带),其他是我创建的角色。 在迁移中,我添加了 role_id 作为附加列,因为我希望每个用户现在都必须拥有一个角色 我想根据用户的 id 检索用户角色所以,我在里面创建了一个名为 roles 的 public 函数用户模型。

    public function roles(){
        return $this->belongsTo(Role::class);
    }

现在,当我尝试 运行 这样的查询时。

  App\User::find(1)->roles;

它不会 return 任何结果,只是空屏幕但是当我将其更改为

    public function role(){
        return $this->belongsTo(Role::class);
    }

之后我运行代码

  App\User::find(1)->role;

现在 returnid 为 1 的用户在其中具有适当角色的确切行。令人困惑的是,为什么 roles() 函数不起作用,而 role() 函数起作用了。

抱歉,如果这个问题已经发布,你可以将我重定向到那个问题。

谢谢!

您必须指定外键

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

但是,将其称为 role() 更为准确,因为您假设用户只能拥有一个角色。