Wat ga je maken? Het "Find something"-veld uit het ontwerp gaat werken: typ een woord en zie alle artikelen waarin dat woord voorkomt in de titel of de tekst.
Waarom is dit nuttig? Zoeken is filteren op vrije tekst. Je leert hier hoe je LIKE-queries veilig opbouwt en waarom je gebruikersinvoer nooit rechtstreeks in een query plakt.
<form method="GET"> met één <input name="search">. Geen POST — zelfde reden als bij filteren.where('title', 'like', '%' . $search . '%').orWhere in een closure, anders zoekt hij per ongeluk door je filters heen.filter()scope uit opdracht 2, zodat zoeken en filteren samenwerken.value="{{ request('search') }}".// Let op de closure om de or-voorwaarden heen!
->when($search, function ($query, $search) {
$query->where(function ($q) use ($search) {
$q->where('title', 'like', "%{$search}%")
->orWhere('body', 'like', "%{$search}%");
});
})
@forelse ($posts as $post)
{{-- kaartje --}}
@empty
<p>Geen resultaten gevonden voor "{{ request('search') }}".</p>
@endforelse
orWhere ineens álle artikelen terug. Test dit bewust: filter op categorie én zoek, en kijk of het klopt.%zoekterm% is traag op grote tabellen. Dat is voor deze opdracht prima, maar leg uit waarom.{{ }} — gebruik nooit {!! !!} op een zoekterm.