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.
- Check Routes untuk mengetahui Method dari Controller yang dipergunakan untuk mengedit.
$php artisan route:list
- Terlihat bahwa routes untuk edit:
posts/{post}/edit
Method:
App\Http\Controllers\PostsController@edit
- Menambahkan button pada show.blade.php
Edit
Menambahkan Load View di Controller
Tambahkan perintah untuk menampilkan view edit di method edit pada PostsController:
return view(‘posts.edit’)->with($data);
- 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
- 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’)}}
Menampilkan isi database di Form
- Tampilkan nilai DB untuk title dan description, dengan memberikan nilai default pada form.
- Setelah dijalankan, hasilnya adalah sebagai berikut:
- Berikut adalah tampilan form Edit yang sudah dibuat:
Menyimpan hasil Edit
- Copy Paste isi method Store ke Update karena fungsi keduanya serupa.
- 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.
- Silahkan dicoba mengubah data dan tekan Simpan
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
- Pada saat halaman web diakses akan muncul tampilan sebagai berikut:
Mengedit PostsController
- Tambahkan beberapa baris untuk load object dari Model Post
- Hapus dengan method delete()
- Redirect ke halaman daftar post
- Jalankan program untuk melihat tampilannya