Я пытаюсь понять, как создавать роли пользователей, используя отношения модели, когда пользователь создается из admin в моем приложении.Правильный способ настройки моделей отношений в настройке репозитория Eloquent
У меня есть следующие таблицы:
пользователей
Таблица users
содержит список пользователей.
users_roles
users_roles
таблица представляет собой сводную таблицу, которая связывает roles
с users
.
роли
roles
таблица содержит список ролей.
Я пытаюсь использовать настройку репозитория, чтобы мой контроллер не упоминал о красноречиве.
Это мой контроллер:
class ContractorController extends Controller
{
private $user;
/**
* Create a new instance.
*
* @return Middleware
*/
public function __construct(UserRepoInterface $user, TimesheetRepoInterface $timesheet)
{
$this->middleware('actions');
$this->user = $user;
$this->timesheet = $timesheet;
}
/**
* Store a newly created resource in storage.
*
* @param Request $request
* @return Response
*/
public function store(CreateUserRequest $request)
{
// create user
$user = $this->user->createUser($request->except('_token'));
// user was created above so we can use $user object
$this->user->createUserRole($user);
return Redirect::back()->withMessage('New user created.');
}
}
Мой репозиторий:
/**
* Create new user role.
*
* @param $request
* @return mixed
*/
public function createUserRole($user)
{
return $this->user->roles()->attach($user);
}
Моя модель Пользователь:
/**
* Get the roles associated with the user.
*
* @return Object
*/
public function roles()
{
return $this->belongsToMany('App\Models\User\UsersRoles', 'users_roles', 'role_id', 'user_id');
}
Приведенные выше результаты кода в записи получение создан в users_roles
таблице что правильно, однако я не знаю, как связать правильную роль_id i в таблице.
Вот данные, которые получает вставлены в users_roles
:.
id user_id role_id
1 1 0
Как вы можете видеть, что нет role_id, потому что я не знаю, как я могу передать это я знаю, что если бы я был phsically создания новую роль в таблице roles
, то я могу использовать этот объект. Но роль уже существует, поэтому мне просто нужно связать этого нового пользователя с той ролью, которую я указываю.
Возможно, кто-то может указать мне, как я могу это сделать или как мне настроить свой код?
Заранее спасибо.
Ваша сводная таблица 'users_roles' должна быть сингулярной и алфавитной. например 'Role_user'. –
Да, но я уже указываю имя таблицы в методе 'ownToMany'. Кроме того, я использую метод 'attach()', см. Выше код. – V4n1ll4