Verwijderen - Introductie
Het kan niet anders dat hoofdstuk met het ongeluksgetal over verwijderen gaat. Iedereen heeft immers al wel eens meegemaakt iets per ongeluk weg te gooien. Dat is pas ongeluk. Hier is dat even erg. Bij delete is het weg. Helemaal. Geen indo, geen ctrl-z, niets in de prullenbak etc.
Kolom toevoegen
We gaan een nieuwe kolom aan de tabel toevoegen. In die kolom komt per regel een knop verwijderen.
In de afbeelding hierboven staan de borders van de tabel aan.
En nu komt het leuke deel. Wat eigenlijk een beetje raar is. We willen dat de verwijder veilig worden gezonden, daarom gaan we voor ieder product (iedere regel) een klein formulier bouwen. Dus voor het voorbeeld hierboven komen er 4 forms op de pagina.
<table>
foreach($products as $product)
   <tr>
      <td>{{ $product['id'] }}</td>
      <td>{{ $product['name'] }}</td>
      <td>
         
<form action="/products/{{ $product->id }}" method="POST"
             
onsubmit="return confirm('Wil je {{ $product->name }} verwijderen?')">
             
csrf
             
method('DELETE')
             
<button type="submit">Verwijderen</button>
         
</form>
      </td>
   </tr>
endforeach
</table>
We gaan een stuk uit het formulier, hierboven in oranje, doornemen.
Het form roept de route /products aan met in de route opgenomen het id van het product. Dus bijvoorbeeld:
/products/5
We geven het id nummer dus echt door in de URL van de route. Om onderscheid te maken met een gewone call veranderen we de methode naar de DELETE methode.
Daar doorheen zit een stukje javascript die een confirm melding zet van Wil je product fiets verwijderen?.
Route
We voegen de route die de delete opvangt toe:
Route::delete('/products/{id}', [ProductController::class, 'destroy']);
De route ziet er ongeveer uit zoals we hem kennen. Als de methode DELETE is, en we een route products met erachter een nummer binnenkrijgen dat zal de ProductController worden opgestart en de method destroy worden aangeroepen.
De naamgeving van deze methode en ook de DELETE methode zijn vastgelegd in Laravel, dus mag je niet vanaf wijken.
Controller
De destroy methode bevat ook weer enkele nieuwigheden.
Zoals we in de store() method hierboven het Request $request binnenkregen, krijgen we hier het $id nummer binnen.
Die gaan we gebruiken. We lezen uit de database de rij waar de id gelijk is aan $id. Eloquent weet dan precies over welke rij we het hebben. Die regel zit in het object $product. We kunnen deze nu eenvoudig verwijderen.
public function destroy($id)
{
    $product = Product::findOrFail($id);
    $product->delete();
    return redirect('/products');
}
Net als in de store() method sluiten we deze method af door de lijst producten opnieuw te laden en te tonen.