【发布时间】:2020-11-17 00:42:26
【问题描述】:
我正在尝试使用 Laravel 和 Vue 制作一个类似应用程序的博客,但遇到了问题。在开发管理面板时,我想要一个“分配角色”功能,管理员可以在其中分配具有特定角色的用户,例如“管理员、版主或作者” 为此,我在 User 模型中定义了一个关系
public function role() {
return $this->hasOne(Role::class);
}
现在在 Vue 中,我想显示一个表格,其中包含所有用户名及其角色。为此,我向 laravel 服务器发送了一个请求以从用户表中获取所有数据,用户表具有以下字段
id , name, role_id , email , password, created_at, updated_at
我在角色模型中也定义了一个关系
public function Users() {
return $this->hasMany(User::class);
}
现在当我获取所有用户时,我会这样做
$users = User::all();
return $users;
如何从我上面发送的数据中获取表中的角色名称。 现在,我只得到 1,2 或 3 的 role_id,但我想要角色的名称。
提前致谢
【问题讨论】:
-
我在其他地方说过这个评论,但我不确定你是否做到了:
public function role() { return $this->belongsTo(Role::class); }你使用了错误的关系类型 -
@TKoL,为什么我不应该在这里使用 hasOne?用户“拥有一个”角色不是更有意义吗?
-
不存在一对多的关系 bw 角色和用户。所以每个用户都属于一个特定的角色,而一个角色有很多用户。 hasOne 用于一对一的关系。
-
'belongsTo' 与 'hasOne' 取决于哪一列有另一列的 id。 'belongsTo' 当您所在的模型“用户”包含与您相关的模型“角色”的 ID 列时。 'hasOne' 如果 Roles 表有一个 user_id 列,您可以在错误消息中看到
标签: javascript laravel vue.js