Я хочу назначить роль существующему пользователю, но получаю эту ошибку.
Мой пользовательский контроллер:
public function show(User $user) {
return view('admin.users.profile', [
'user' => $user,
'roles' => Role::all(),
]);
public function attach(User $user) {
$user->roles()->attach(request('role'));
return back();
}
Моя форма:
<form method = "post" action = "{{route('user.role.attach', $user)}}">
@csrf
@method('PUT')
<input type = "hidden" name = "role" value = "{{$role->id}}">
<button class = "btn btn-primary">Attach</button>
</form>
Я получаю эту ошибку в браузере:
insert into `role_user` (`role_id`, `user_id`) values (2, ?)
Итак, я полагаю, что я не возвращаю user_id, а только role_id, нажав кнопку для прикрепления.
Да, конечно!
Вы не привязали user
к своему маршруту. Это должно быть что-то вроде:
Route::put('/users/{user}/attach', [App\Http\Controllers\UserController::class,
'attach'])->name('user.role.attach');
Вы, конечно, можете немного изменить свой маршрут, но самое главное здесь то, что вы ожидаете пользователя в контроллере, но вы не привязываетесь к маршруту;)
Спасибо! Это помогло и решило проблему!
Похоже, что привязка модели маршрута создает некоторые проблемы :) Можете ли вы поделиться своим файлом маршрута?