CRUD : Delete Data dari database dan meringkas Route menjadi Resource Laravel

Barintek
0

 


   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 tema
Route::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 tema
Route::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.

Tags

Posting Komentar

0Komentar

Posting Komentar (0)