Cara Hapus Data MySQL di Laravel

wahyunanangwidodo

wahyunanangwidodo Selasa, 30 Maret 2021

Cara Hapus Data MySQL di Laravel

Dalam permintaan yang kita buat, kita perlu membuat parameter untuk url yang spesifik ke data record. Kita perlu menentukan index atau ID yang mengidentifikasi data mana untuk dihapus.

Dibawah ini adalah data record dari sebuah tabel di database mysql yang telah dibuat sebelumnya dari tutorial Belajar Laravel Pemula: Cara Menyimpan Data ke Database MySQL sebagai data contoh yang akan dihapus.

Cara Hapus Data MySQL di Laravel

Silahkan focus pada route, controller, dan button dengan permintaan html form yang akan dibuat.

Membuat route

Pembuatan route kita buat seperti dibawah ini.

//web.php

use App\Http\Controllers\PostController;

Route::delete('/post/delete/{id}', [PostController::class, 'destroy']);

Akses parameter pada controller

Selanjutnya pada controller, kita tambahkan parameter pada method yang dibuat.

use App\Models\Post;

public function destroy($id)
{
   $post = Post::find($id);
   $post->delete();
   
   return redirect('/');
   
   //atau
   
   return redirect('posts')->with('success',' Penghapusan berhasil!');
}

Membuat Button

Sekarang kita menuju ke pembuatan button. Button dibuat di dalam permintaan formulir form dan foreach atau loop yang mengambil id dari setiap record yang ditampilkan seperti dibawah ini.

//views/post/index.blade.php

@extends('layouts.app')

@section('title', 'Semua Post')

<style>
table,
td {
    border: 1px solid #333;
    text-align:center;
}

thead,
tfoot {
    background-color: #222;
    color: #fff;
}
th{
  width: 50%; 
}
button{
    background-color: #ff5346;
    color: #fff;
    border: none;
    border-radius: 2px;
}
</style>
@section('content')
@if ($message = Session::get('success'))
     <p> {{ $message }} </p>
@endif
<table>
    <thead>
        <tr>
            <th colspan="3">Semua Post</th>
        </tr>
    </thead>
    <tbody>
    
    @foreach ($posts as $post)
       <tr>
          <td>{{ $post->title}}</td>
          <td>{{ $post->body }}</td> 
          <form method="POST" action="{{ url('post/delete', $post->id ) }}">
              @csrf
              @method('DELETE')
            <td><button>Hapus</button></td>
          </form> 
        </tr>
     @endforeach
        
    </tbody>
</table> 
@endsection

Kita lihat pada html form diatas. Setiap permintaan formulir form, kita harus menambahkan @csrf yang merupakan token dengan hidden input untuk memvalidasi permintaan.

Lalu karena formulir HTML form tidak dapat membuat permintaan PUT, PATCH, dan DELETE, maka kita perlu menambahkan hidden method @method('DELETE').

Penampakannya seperti gambar dibawah ini.

Cara Hapus Data MySQL di Laravel
Cara Hapus Data MySQL di Laravel

Penghapusan telah berhasil dilakukan. Respon setelah submit diatas dibuat untuk kembali ke halaman sebelumnya atau redirect ke route halaman 'posts' dimana halaman ini dibuat pada tutorial Cara Menampilkan Data di Laravel - MySQL.

Jika tidak mengikuti tutorial sebelumnya, silahkan focus pada route, controller dan form mengenai bagaimana membuat permintaan penghapusan.

Silahkan dicoba.

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel

Berlangganan

Berlangganan untuk mendapat pemberitahuan artikel terbaru via email.