DEV Community

Hilmi Hidayat
Hilmi Hidayat

Posted on • Originally published at divisidev.com on

CRUD Laravel 9 #5: Delete Data dari Database & Implementasi Sweetalert2

CRUD Laravel 9 - Setelah pada artikel sebelumnya saya telah membahas bagaimana menampilkan data, insert data dan update data, maka pada artikel kali ini, saya akan membagikan bagaimana cara membuat fitur delete data beserta implementasi confirm dialog menggunakan sweetalert2. Karena kita juga mempunyai file yang tersimpan di storage, jadi pada saat delete data nantinya, file yang ada di storage tersebut juga akan terhapus.

Oke, mari kita langsung saja ke koding. 👨‍💻

Step 1: Setup Layout

Tambah delete button

<form method="POST" action="{{ route('posts.destroy', $post->id) }}">
    @method('DELETE')
    @csrf
    <button type="submit" class="btn btn-danger ms-1 show_confirm" data-toggle="tooltip" title='Delete'>Delete</button>
</form>
Enter fullscreen mode Exit fullscreen mode

Langkah pertama yang kita lakukan yaitu menambahkan delete button pada file index.blade.php. Silahkan copy code di atas dan paste pada file index.blade.php, letakkan di atas atau di bawah button edit yang sebelumnya telah ditambahkan.

<td>
    <div class="d-flex">
        <a href="{{ route('posts.edit',$post->id) }}" class="btn btn-success">Edit</a>
        <form method="POST" action="{{ route('posts.destroy', $post->id) }}">
            @method('DELETE')
            @csrf
            <button type="submit" class="btn btn-danger ms-1 show_confirm" data-toggle="tooltip" title='Delete'>Delete</button>
        </form>
    </div>
</td>
Enter fullscreen mode Exit fullscreen mode

Jadi, untuk saat ini kita telah mempunyai dua actions button yaitu edit dan delete seperti contoh code di atas.

@push('scripts')
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script type="text/javascript">

     $('.show_confirm').click(function(event) {
          var form = $(this).closest("form");
          event.preventDefault();
          swal.fire({
            title: 'Are you sure?',
            text: "You won't be able to revert this!",
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#3085d6',
            cancelButtonColor: '#d33',
            confirmButtonText: 'Yes, delete it!'
          })
          .then((result) => {
            if (result.isConfirmed) {
                form.submit();
                Swal.fire(
                'Deleted!',
                'Your data has been deleted.',
                'success'
                )
            }
        });
      });

</script>    
@endpush
Enter fullscreen mode Exit fullscreen mode

Nah, seperti yang telah saya sampaikan di awal, kita akan menggunakan sweetalert2. Silahkan copy code di atas, lalu paste pada file index.blade.php. *Disini saya menggunakan jquery dan sweetalert2 versi CDN.

Step 2: Setup Controller

public function destroy(Post $post)
{
    if ($post->cover) {
        \Storage::delete('public/'.$post->cover);
    }

    $post->delete();

    return to_route('posts.index')->with('success','Post deleted successfully');
}
Enter fullscreen mode Exit fullscreen mode

Lanjut ke PostController.php, disini kita akan bekerja pada method destroy. Silahkan buka file PostController.php, dan pada method destroy silahkan sesuaikan codenya menjadi seperti contoh code di atas. Jadi, saat method destory dipanggil, dia akan mengecek terlebih dahulu, apakah data post tersebut mempunyai value cover atau tidak. Jika post tersebut mempunyai cover, maka file yang ada di storage akan dihapus dan dilanjutkan dengan menghapus data post tersebut.

Step 3: Testing

delete with confirm dialog sweetalert2 laravel 9

Setelah melakukan langkah-langkah mulai dari menambahkan delete button, confirm dialog menggunakan sweetalert2 sampai melakukan setup pada method destory di PostController.php, maka sekarang waktunya untuk testing. Silahkan jalankan laravel project kamu dengan menjalankan perintah php artisan serve, lalu buka laravel project pada browser dengan URL 127.0.0.1:{post}/posts atau crud-laravel9.test/posts. Kemudian, cobalah untuk klik delete button pada salah satu datanya, maka akan menampilkan confirm dialog seperti gambar di atas. Jika kita klik Yes, maka file cover dan data tersebut akan terhapus dari database dan storage.

Demikianlah artikel tentang cara menghapus data dari database dan implementasi delete confirm dialog menggunakan sweetalert2 di laravel 9. Pada artikel selanjutnya, saya akan coba membagikan bagaimana cara implementasi softdelete di laravel 9. Sampai jumpa di artikel berikutnya. 👨‍💻 🚀

Top comments (0)