所以我有一个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