Проверка вашего контроллера выглядит правильно.
Вы будете перенаправлены обратно на свою форму, так как запрос не содержит значений 'title' и 'body'. Эти значения являются «обязательными» в соответствии с вашим массивом проверки.
Добавьте эту строку в контроллер для отладки и посмотрите, что на самом деле содержит запрос:
dd(request()->all());
In на ваш взгляд, убедитесь, что у ваших html форм форм ввода правильно установлены соответствующие атрибуты имени:
<form method="POST" action="/your-route">
@csrf
<input name="title" ...>
<input name="body" ...>
</form>
И чтобы ответить на ваш последний вопрос: Нет, вам не нужно добавлять user_id
в ваш массив $ data; Laravel сделает это за вас, так как вы соединяете метод create () из аутентифицированного пользовательского экземпляра с этой строкой: auth()->user()->profile()->post()->create($data);
Вы также можете вызывать метод create () непосредственно из класса Post, в этом случае должен быть указан user_id:
Post::create([
'user_id' => 1,
'title' => 'My title',
'body' => 'My body',
]);