Вы получаете эту ошибку, потому что $request->route('id')
пусто, и ваша база данных не позволяет пустому столбцу created_by
.
Для отладки проверьте содержание вашего запроса:
public function store(Request $request){
// Die and dump the request:
dd($request->all());
post::create([
'title'=>$request->title,
'body'=>$request->body,
'user_id'=>Auth::user()->id,
'filled_by'=>Auth::user()->id,
'created_by' => $request->route('id'),
]);
return redirect('/profile/' . auth()->user()->id);
}
Я полагаю, что вы не правильно получаете значение id
из запроса.
Возможно, вы хотите получить его с помощью $request->id
, но трудно сказать, не глядя на ваш клинок. Если вы можете поделиться своим мнением, я отредактирую свой ответ.
Редактировать: Кроме того, ваш маршрут неверен. Чтобы указать на метод контроллера create()
, вам не нужно передавать id
на ваш маршрут. По определению вы хотите СОЗДАТЬ объект, который еще не существует и, следовательно, еще не имеет идентификатора.
С помощью метода create () ваш маршрут должен выглядеть следующим образом:
Route::get('/post/create', 'PostsController@create');
Кроме того, если вы хотите следовать Laravel соглашениям об именах (поверьте мне, вы делаете это), ваши контроллеры должны быть названы в единственном числе и в URL-моделях во множественном числе. То есть это будет выглядеть так:
Route::get('/posts/create', 'PostController@create');
И маршрут для вашего метода store () должен выглядеть так:
Route::post('/posts', 'PostController@store');