CRUD: Update & Delete merupakan fungsi yang dipergunakan untuk mengubah dan menghapus data. Artikel ini akan membahas pembuatan fitur Update dan Delete pada Laravel.

CRUD: Update & Delete

Fungsi Update di CRUD berguna untuk mengubah data yang sudah terdapat di server, misalnya pada untuk pengguna web ingin mengubah data alamat yang sudah tersimpan pada  proses registrasi pada sebuah web, mengganti profile picture, mengedit blog post, dan berbagai aktivitas lainnya.

Seperti halnya pada fungsi Insert, pada fungsi Update juga dibutuhkan ketersediaan Form. Melalui form ini akan ditampilkan data yang sudah terdapat di server untuk kemudian pengguna dapat mengetikkan kalimat, memilih dari pilihan yang disediakan, atau misalnya dengan menekan tombol tertentu, dan apabila disimpan akan menggantikan data yang sebelumnya ada.

Delete merupakan salah satu fungi yang tercakup dalam CRUD. Melalui fungsi ini data yang sudah tidak dibutuhkan dapat dihapus dari database. Contoh pemanfaatan fitur ini misalnya adalah untuk menghapus blog post yang tidak perlu, menghapus transaksi yang salah, dan berbagai fungsi lainnya.

Namun demikian, untuk sebuah sistem yang baik perlu dipertimbangkan untuk pemanfaatan fitur delete. Pada transaksi misalnya, umumnya data tidak didelete secara fisik, namun diberikan sebuah field/kolom tertentu untuk menandai bahwa data dihapus serta dicatat tanggal penghapusannya, bahkan siapa pelakunya yang menghapus. Hal ini bertujuan untuk masalah kebutuhan ke depan yang serta untuk akuntabilitas data, dimana apabila dibutuhkan data masih bisa diakses.

Pembuatan Fitur CRUD Update

Berikut adalah beberapa langkah untuk melakukan update data yang sudah tersimpan di server sebagai bagian dari fungsi CRUD.

Menambahkan tombol Edit.

Silahkan menambahkan tombol edit di halaman yang menampilkan detail dari blog post.

Tampilan Tombol Edit

Tampilan Tombol Edit

  • Check Routes untuk mengetahui Method dari Controller yang dipergunakan untuk mengedit.

    $php artisan route:list

Tampilan Route List

Tampilan Route List

  • Terlihat bahwa routes untuk edit:
            posts/{post}/edit
    Method:
           App\Http\Controllers\PostsController@edit
  • Menambahkan button pada show.blade.php
    Edit
Menambahkan tombol Edit di show.blade.php

Menambahkan tombol Edit di show.blade.php

Menambahkan Load View di Controller

Tambahkan perintah untuk menampilkan view edit di method edit pada PostsController:

    return view(‘posts.edit’)->with($data);

Menambahkan View pada Controller

Menambahkan View pada Controller

  • Membuat View
    Copy paste show.blade.php, karena edit serupa dengan form untuk membuat post baru
  • Mengubah Action
    Ganti teks judul menjadi Edit Blog Post dan ganti action menjadi array, dgn mengirim $post->id[‘PostsController@update’, $post->id] Nantinya fungsi untuk menyimpan data yang dikirimkan form adalah pada method update() pada PostsController, dan mengirimkan nilai $post->id
Mengubah Action pada Controller untuk Edit

Mengubah Action pada Controller untuk Edit

  • Pada saat Routes diperiksa di atas, terlihat bahwa routes untuk update:
            posts/{post}
    Method:
    App\Http\Controllers\PostsController@update
  • Sedangkan Form Method yang dipergunakan adalah PUT atau PATCH

Penggunaan Method Spoofing

  • Form HTML hanya support GET atau POST
  • Untuk Method PUT, PATCH, dan DELETE dapat menggunakan Method Spoofing, dengan mengirimkan melalui hidden form dengan cara
    {{Form::hidden(‘_method’, ‘PUT’)}}
    {{Form::hidden(‘_method’, ‘PATCH’)}}
    {{Form::hidden(‘_method’, ‘DELETE’)}}
  • Mengubah Form Method: PUT/PATCH
    Tambahkan baris berikut di dalam form:

   {{Form::hidden(‘_method’,’PUT’)}}

Method Spoofing PUT

Method Spoofing PUT

Menampilkan isi database di Form

  • Tampilkan nilai DB untuk title dan description, dengan memberikan nilai default pada form.
Menambahkan nilai default di Form

Menambahkan nilai default di Form

  • Setelah dijalankan, hasilnya adalah sebagai berikut:
Tampilan Tombol Edit

Tampilan Tombol Edit

  • Berikut adalah tampilan form Edit yang sudah dibuat:
Tampilan Form Edit

Tampilan Form Edit

Menyimpan hasil Edit

  • Copy Paste isi method Store ke Update karena fungsi keduanya serupa.
Method Update

Method Update

  • Perbedaan store dan update adalah tidak membuatdata baru, namun mengubah, oleh karena itu tidak perlu membuat objek baru dari Model Post, namun load dari Model Post sesuai $post->id yang di-edit.
Hasil Edit Method

Hasil Edit Method

  • Silahkan dicoba mengubah data dan tekan Simpan
Hasil Running Update Data

Hasil Running Update Data

Pembuatan CRUD: Delete

Berikut adalah beberapa contoh langkah yang dapat ditempuh untuk membuat fitur untuk menghapus data.

Buat Link (Button) Untuk Hapus

  • Menghapus data bisa memanfaatkan dengan Method Spoofing yang sudah dibahas sebelumnya
  • Tambahkan di show.blade.php
Copy to Clipboard
  • Pada saat halaman web diakses akan muncul tampilan sebagai berikut:
Tampilan Form setelah ditambah tombol Delete

Tampilan Form setelah ditambah tombol Delete

Mengedit PostsController

  • Tambahkan beberapa baris untuk load object dari Model Post
  • Hapus dengan method delete()
  • Redirect ke halaman daftar post
Copy to Clipboard
  • Jalankan program untuk melihat tampilannya
Tampilan pesan sukses setelah berhasil menghapus

Tampilan pesan sukses setelah berhasil menghapus

Written by: SEW 20191105