我如何才能让这些基本的Eloquent关系发挥作用



所以我有一个users表,其中每个用户都有一个role_id,然后我有一张角色表,其中有role_id和角色的名称。我面临的问题是用户模型。在迁移时,我正确地设置了外键,但在模型中,例如,当我尝试显示用户角色时,我不应该这样做?

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

每当我在artisan tinker上找到一个用户,并试图用该方法查看他的角色时,它都不会返回任何结果。我刚刚得到了这个(在这种情况下,用户正在尝试查看角色,它的角色是admin,即id为1的角色(:

IlluminateDatabaseEloquentRelationsBelongsToMany {#3351
+withTimestamps: false,
}

我不应该得到角色的名字?

对于获取用户角色,您需要类似以下的代码

$user = User::find($id);
$roles = $user->roles()->get(); 
// or $roles = $user->roles with lazy loading

另一种解决方案是

$user = User::with('roles')->find($id);
$roles = $user->roles

已编辑

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

获取具有角色的用户

$user = User::with('role')->find($id);
$role = $user->role

最新更新