Вы можете управлять этим с помощью комбинации один-к-одному & один-ко-многим , а затем получить доступ к роли через средство доступа :
`users` 1 --- 1 `user_assigned_roles` m ---- 1 `user_roles`
Итак, в UserAssignedRole
модели:
/** UserAssignedRole.php */
public function role()
{
return $this->belongsTo('App\UserRole');
}
Тогда в вашей User
модели:
/** User.php */
public function assigned_role()
{
return $this->hasOne('App\UserAssignedRole');
}
// defining an accessor for your role:
public function getRoleAttribute()
{
return $this->assigned_role->role; // <--- Access the role of 'UserAssignedRole'
}
Итак, в вашем контроллере (или где угодно) вы можете сделать:
/** UsersController.php */
public function myFunction()
{
$user = User::find(1);
$role = $user->role; // <--
dd($role->name);
//
}
PS1: я настоятельно рекомендую вам обновить до последней версии Laravel , чтобы использовать новые функции, а такжепо соображениям безопасности, исправлениям и т. д.
PS2: есть пакет под названием Eloquent Has Many Deep от Jonas Staudenmeir , который управляет такого рода отношениями (и другими) для вас.