Sampailah kita pada titik terakhir pada pembahasan CRUD. yaiut menghapus data dari database. Medoe Delete merupakan konsep dimana user dapat menghapus data dari database. Jadi mari kita coba praktekkan saja
Hapus Data
Masih di proyek yang sama pada sebelumnya, yaitu Agenda dan kita fokus pada tabel tema. Jadi buka vsCode dan buka program anda kembali. Buka file tema.blade.php yang telah kita buat sebelumnya, dan mari kita fokus ke tomol edit. Edit tombol Delete seperti berikut:
<td><a href="{{ route('tema.edit', $tema->id_tema) }}" class="btn btn-warning btn-sm me-2"><i class="bi bi-pencil-square"></i> Edit</a><form action="{{ route('tema.destroy', $tema->id_tema) }}" method="POST" class="d-inline"onsubmit="return confirm('Apakah Anda yakin ingin menghapus tema ini?');">@csrf@method('DELETE')<button type="submit" class="btn btn-danger btn-sm"><i class="bi bi-trash"></i> Hapus</button></form></td>
Kita menggunakan metode POST jadi disini kita memasukkan link delet ke dalam sebuah form. Ini berguna untuk keamanan data nantinya saat dionlinekan.
Selanjutnya buka web.php. Tambahkan route seperti berikut:
//route temaRoute::get('/tema', [TemaController::class, 'index'])->name('tema.index');Route::get('/tema/create/', [TemaController::class, 'create'])->name('tema.create');Route::post('/tema/store', [TemaController::class, 'store'])->name('tema.store');Route::get('/tema/edit/{id}', [TemaController::class, 'edit'])->name('tema.edit');Route::put('/tema/update/{id}', [TemaController::class, 'update'])->name('tema.update');Route::post('/tema/destroy/{id}', [TemaController::class, 'destroy'])->name('tema.destroy');
Terakhir buat fungsi destroy()
public function destroy($id){$tema = TemaModel::findOrFail($id);$tema->delete();return redirect()->route('tema.index');}
Jalankan program. Coba hapus data yang telah kita buat. Jika lancar maka akan keluar notif ketika anda klik hapus kemudian jika di klik ok maka data akan di hapus.
Meringkan Route
Perhatikan, terdapat enam baris kode pada web.php. Laravel sendiri menyediakan resource untuk meringkas kode tersebut. silahkan ganti kode ini:
//route temaRoute::get('/tema', [TemaController::class, 'index'])->name('tema.index');Route::get('/tema/create/', [TemaController::class, 'create'])->name('tema.create');Route::post('/tema/store', [TemaController::class, 'store'])->name('tema.store');Route::get('/tema/edit/{id}', [TemaController::class, 'edit'])->name('tema.edit');Route::put('/tema/update/{id}', [TemaController::class, 'update'])->name('tema.update');Route:
Menjadi:
Route::resource('tema', TemaController::class);
Coba jalankan kembali program anda. Tambah, edit dan coba hapus. Tidak akan terjadi perubahan. karena pada konsepnya resource Laravel otomatis membuat route:
- tema.index → GET /tema
- tema.create → GET /tema/create
- tema.store → POST /tema
- tema.edit → GET /tema/{id}/edit
- tema.update → PUT /tema/{id}
- tema.destroy → DELETE /tema/{id}.
Terimakasih.