Zobacz, czy Twój model Post ma atrybut fillable, czyli odpowiedniki nazw kolumn w bazie danych, zapisane w postaci tablicy.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = [
'user_id',
'title',
'content',
];
}
Wtedy w kontrolerze tworząc post możesz przekazać wszystkie wartości inputów i Laravel sam załapie, które dodać do bazy, właśnie dzięki atrybutowi fillable. Z tym że musiałbyś tam przekazać user_id, a nigdzie nie widzę takiego pola w widoku.
Możesz to zrobić tak:
@extends('layout')
@section('content')
<form action="{{ route('posts.store') }}" method="post">
@csrf
@if ($errors->any())
@foreach ($errors->all() as $error)
<div class="btn btn-danger">{{ $error }}</div>
@endforeach
@endif
<input type="hidden" name="user_id" class="form-control" value="{{ auth()->user()->id }}">
<div class="form-group">
<label for="title">Tytuł posta:</label>
<input type="text" name="title" class="form-control">
</div>
<div class="form-group">
<label for="content">Treść posta:</label>
<textarea rows="7" name="content" class="form-control"></textarea>
</div>
<div class="form-group">
<button type="submit" value="Zapisz" class="btn btn-primary">Dodaj post</button>
<span class="btn btn-dark">
<a href="javascript:history.back()" >Powrót</a>
</span>
</div>
</form>
@endsection
Ale zalecałbym dodać user_id w kontrolerze, czyli tak:
Posts::create([
'user_id' => auth()->user()->id,
'title' => $request->input('title'),
'content' => $request->input('content'),
]);
return redirect()->route('posts.index');