Исходя из ваших тегов, что вы ищете Eloquent (то есть Laravel) способ сделать это.
Краткий ответ: используйте модель маршрута привязка и организация ваших контроллеров организована и сфокусирована на одном.
Как уже ответил , ваш User
должен быть сохранен первым. Я бы порекомендовал вам сделать этот шаг в своем собственном контроллере:
// UsersController.php
public function store(Request $request) {
$attributes = $request->validate([
// validation rules
]);
$user = User::create($attributes);
return redirect('/users/' . $user->id);
}
Теперь, когда у вас есть User
, вы можете присоединить связанные модели. Создайте отдельный набор маршрутов, указывающих на отдельный контроллер для обработки отношения:
// routes/web.php
Route::get('/user/{user}/demands', 'UserDemandsController@index');
Route::post('/user/{user}/demands', 'UserDemandsController@store');
// ^^^^^^
// used with route model binding
Вот где привязка модели маршрута вступает в игру, загружая модель прямо из параметров маршрута ({user}
):
// UserDemandsController.php
public function store(Request $request, User $user) { // <-- ROUTE MODEL BINDING
$attributes = $request->validate([
// validation rules
]);
$user->demands()->create($attributes);
}
Результат очень чистый, простой код.