Wat ga je maken?

Onder elk artikel kunnen bezoekers reageren. De reacties worden opgeslagen in de database en getoond op de detailpagina.

Waarom is dit nuttig?

Dit is je eerste échte één-op-veel-relatie mét formulier. Precies de kern van Eloquent.

Stappenplan

  1. Maak een migratie met een commentstabel. Denk na over de kolommen: wie, wat, bij welk artikel, wanneer.
  2. Gebruik foreignId('post_id')->constrained()->cascadeOnDelete(). Zoek uit wat cascadeOnDelete() doet en waarom dat hier handig is.
  3. Leg de relaties vast: Post::comments() (hasMany) en Comment::post() (belongsTo).
  4. Bouw het formulier op de detailpagina, met een POST-route naar bijvoorbeeld /posts/{post}/comments.
  5. Valideer, sla op via de relatie, en stuur terug met back().
  6. Toon de reacties, nieuwste bovenaan, met een leesbare datum.
  7. Voeg een kolom approved toe: reacties zijn pas zichtbaar nadat jij ze goedkeurt. Zo bereid je opdracht 8 voor.

Kleine hulpmiddelen

php artisan make:model Comment -mc   # model + migratie + controller in één keer
// Opslaan via de relatie: post_id wordt automatisch ingevuld
$post->comments()->create($validated);

// Ophalen zonder N+1-probleem
$post->load(['comments' => fn ($q) => $q->latest()]);
{{-- Leesbare datum, dankzij Carbon --}}
<time>{{ $comment->created_at->diffForHumans() }}</time>