Days
Hours
Minutes
Seconds

Promo Grand Opening

15% OFF

Khusus Pelanggan Baru

Tutorial Laravel #12: CRUD Laravel – Menghapus Data Di Database

 

 

Tutorial ini adalah bagian terakhir dari seri CRUD (Create, Read, Update, Delete) kita. Anda akan belajar cara mengimplementasikan fungsionalitas Delete untuk menghapus data dari database menggunakan Laravel.


 

Langkah 1: Menambahkan Metode destroy di Controller

 

Kita akan menambahkan metode destroy di ProductController yang akan bertanggung jawab untuk menghapus data.

Buka file app/Http/Controllers/ProductController.php dan tambahkan atau lengkapi metode destroy seperti di bawah ini:

PHP

<?php

namespace App\Http\Controllers;

use App\Models\Product;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    // ... metode index(), create(), store(), edit(), update() ...

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(Product $product)
    {
        // Hapus data produk
        $product->delete();

        // Redirect kembali ke halaman daftar produk dengan pesan sukses
        return redirect()->route('products.index')->with('success', 'Produk berhasil dihapus!');
    }
}

 

Penjelasan Kode

 

  • destroy(Product $product): Sama seperti metode edit dan update, kita menggunakan Route Model Binding yang memungkinkan Laravel secara otomatis menemukan produk berdasarkan ID di URL dan mengikatnya ke parameter $product.
  • $product->delete();: Ini adalah metode Eloquent yang sederhana dan efisien untuk menghapus baris dari database. Metode ini akan menjalankan perintah SQL DELETE di belakang layar.
  • return redirect()->route('products.index')->with('success', ...): Setelah data berhasil dihapus, kita mengarahkan pengguna kembali ke halaman daftar produk dan menambahkan pesan sukses.

 

Langkah 2: Menambahkan Form Tombol Hapus di View

 

Untuk menghapus data, kita tidak bisa menggunakan link <a> biasa dengan metode GET karena itu tidak aman. Sebaliknya, kita akan menggunakan form HTML dengan metode POST yang disamarkan sebagai DELETE menggunakan direktif @method.

Buka file resources/views/products/index.blade.php dan tambahkan form ini di dalam loop @foreach di samping link “Edit”:

HTML

...
<td>
    <a href="{{ route('products.edit', $product->id) }}">Edit</a>
    
    <form action="{{ route('products.destroy', $product->id) }}" method="POST" style="display:inline;">
        @csrf
        @method('DELETE')
        <button type="submit" onclick="return confirm('Apakah Anda yakin ingin menghapus produk ini?')">Hapus</button>
    </form>
</td>
...

 

Penjelasan Kode

 

  • <form action="{{ route('products.destroy', $product->id) }}" method="POST" ...>: Form ini akan mengirimkan permintaan ke URL yang sesuai dengan metode destroy di controller, dengan ID produk yang akan dihapus.
  • @csrf: Direktif Blade ini melindungi form dari serangan Cross-Site Request Forgery (CSRF).
  • @method('DELETE'): Direktif ini adalah kunci. Ini memberi tahu Laravel bahwa permintaan POST ini harus diperlakukan sebagai permintaan DELETE.
  • <button type="submit" ...>: Kita menggunakan tombol submit untuk mengirimkan form.
  • onclick="return confirm('...')": Ini adalah validasi JavaScript sederhana untuk menampilkan dialog konfirmasi kepada pengguna sebelum data dihapus. Ini adalah praktik yang baik untuk mencegah penghapusan yang tidak disengaja.

 

Langkah 3: Menambahkan Route

 

Terakhir, kita perlu memastikan route untuk metode destroy sudah terdefinisi. Jika Anda membuat ProductController dengan opsi --resource, route ini sudah otomatis dibuat.

Anda dapat memverifikasinya di file routes/web.php:

PHP

use App\Http\Controllers\ProductController;
use Illuminate\Support\Facades\Route;

// ... route lainnya ...

Route::resource('products', ProductController::class);

Atau jika Anda mendefinisikan route secara manual:

PHP

// ...
Route::delete('/products/{product}', [ProductController::class, 'destroy'])->name('products.destroy');

Fungsi Route::resource() adalah cara cepat untuk membuat semua route CRUD secara otomatis, termasuk delete.

 

Selesai!

 

Sekarang Anda dapat mengunjungi http://localhost:8000/products di browser Anda. Klik tombol “Hapus” di samping salah satu produk. Setelah konfirmasi, produk tersebut akan dihapus dari database, dan Anda akan melihat halaman daftar produk diperbarui dengan pesan sukses. Selamat, Anda telah berhasil mengimplementasikan operasi Delete dalam CRUD Laravel.

Wawasan Terbaru

Gemini_Generated_Image_wfw5uwwfw5uwwfw5
Mengenal Dunia Grafis: Dari Piksel Hingga Vektor, Kekuatan Visual di Era Digital
Gemini_Generated_Image_b6dimfb6dimfb6di
Mengenal Foundation: Kerangka Kerja Front-End Profesional untuk Web Responsif
Gemini_Generated_Image_sx3ztpsx3ztpsx3z
CSS
Mempercantik Website dengan CSS: Seniman di Balik Tampilan Web 🎨
Gemini_Generated_Image_e013qke013qke013
Mengenal HTML: Fondasi dari Setiap Halaman Website 🌐
Gemini_Generated_Image_ldki4nldki4nldki
Menyelami Dunia Coding: Seni Berbicara dengan Komputer
Gemini_Generated_Image_dpvliydpvliydpvl
Menguasai GIT: Fondasi Penting dalam Dunia Pengembangan Perangkat Lunak
Gemini_Generated_Image_sqcib9sqcib9sqci
Tutorial Python #12: Mengenal Jenis-jenis Operator dalam Python
Gemini_Generated_Image_o1bw3do1bw3do1bw
Memahami Tipe Data Dictionary dalam Python
Gemini_Generated_Image_ko4ixfko4ixfko4i
Mengenal Tipe Data Set dalam Python
Gemini_Generated_Image_1xop7m1xop7m1xop
Tuple dalam Python: Pengenalan dan Tutorial

Wawasan Serupa

Gemini_Generated_Image_q0o3sbq0o3sbq0o3
Gemini_Generated_Image_mem6cgmem6cgmem6
Gemini_Generated_Image_ust09gust09gust0
Gemini_Generated_Image_d8a5kwd8a5kwd8a5

Ceritakan Detail Proyekmu

Mulai dari 30K aja, solusi IT kamu langsung jalan tanpa drama.

Kata Mereka Tentang Solusi Coding

Dipercaya oleh lebih dari 200++ client untuk menyelesaikan proyeknya dengan total 250++ proyek dari berbagai jenis proyek