Edit & Delete Data (Laravel)

Assalamu'alaikum Wr. Wb

Hello Guys!
Kembali lagi bersama saya Salman Fauzan. Pada kesempatan kali ini, kita masih akan melanjutkan pembahasan kita sebelumnya yaitu mengenai Framework PHP  menggunakan Laravel. Nah, kali ini kita akan membahas tentang Edit & Delete Data.


Setelah membahas tentang Create Data, Validation & Old Input pada pembahasan sebelumnya, tentu saja kita mempelajari Edit & Delete Data pada sebuah form yang telah kita buat kemarin. Nah bagaimanakah caranya?

Langkah Pertama yang harus dilakukan adalah tentu saja dengan membuat 3 Route baru yang nanti akan digunakan pada saat penggunaan Edit & Delet Data nanti. Route apa saja yang akan digunakan?

Route::get('/siswa/{id}/edit', 'SiswaController@edit');
Route::patch('/siswa/{id}', 'SiswaController@update');
Route::delete('/siswa/{id}', 'SiswaController@destroy');

Setelah mempersiapkan 3 Route terbaru tersebut, sekarang kita akan mempelajari bagaimana cara untuk mengedit dan delete sebuah data dalam form yang telah kita buat sebelumnya.


Studi Kasus 1 (Menjelaskan Fungsi Update & Destroy)

Langkah selanjutnya adalah dengan membuat function edit dalam file Controller yang telah kita buat sebelumnya. Function edit yang akan digunakan adalah sebagai berikut :

public function edit(Request $request, $id)
{
$data['siswa'] = \DB::table('t_siswa')->find($id);
return view('siswa.form', $data);
}
Dari codingan diatas, kita dapat mengetahui bahwa pertama-tama kita akan mengambil data yang telah kita pilih pada sebuah form edit, kemudian kita akan mencocokan data yang kita ambil dengan database dengan menggunakan \DB::table('t_siswa')->find($id); setelah itu kita akan dihubungkan dengan form create sebelumnya. Function edit ini hanyalah mengambil data yang akan kita edit saja, untuk mengubah datanya kita akan memasuki langkah selanjutnya.

Selanjutnya, untuk mengubah data yang telah kita pilih, kita harus membuat function update terlebih dahulu. Function update nya adalah sebagai berikut :

public function update(Request $request, $id)
{
$rule = [
'nis'=>'required|numeric',
'nama_lengkap'=>'required|string',
'jenkel'=>'required',
'goldar'=>'required',
];
$this->validate($request, $rule);
$input = $request->all();
unset($input['_token']);
unset($input['_method']);
$status = \DB::table('t_siswa')->where('id', $id)->update($input);
if ($status) {
return redirect('/siswa')->with('success', 'Data Berhasil Diubah');
} else {
return redirect('/siswa/create')->with('error', 'Data Berhasil Diubah');
}
}

Tak jauh berbeda dengan function store, didalam function ini kondisi where digunakan untuk menentukan data mana yang akan diedit, kemudian setelah kondisi yang lainnya terpenuhi maka akan kembali ke tampilan form awal, apabila gagal maka akan muncul error message.

public function destroy(Request $request, $id)
{
$status = \DB::table('t_siswa')->where('id', $id)->delete();
if ($status) {
return redirect('/siswa')->with('success', 'Data berhasil dihapus');
} else {
return redirect('/siswa/create')->with('error', 'Data gagal dihapus');
}
}

Selanjutnya kita akan mulai membahas mengenai function destroy. Dari namanya saja kita dapat menggambarkan bahwa function ini akan digunakan untuk menghancurkan / menghapus sebuah data yang telah dipilih oleh user. Dapat kita ketahui dalam codingan diatas, bahwa setelah perintah where dijalankan maka data yang dipilih akan dihapus menggunakan method delete().

Tentu saja setelah kita membuat route dan beberapa function yang akan digunakan untuk edit dan delete, kita juga harus membuat button yang akan digunakan untuk menjalankan kedua function tersebut.

<th colspan = "2" width = "auto"><center>Aksi</center><th>
<td>
<a class = "btn btn-success" href = "{{ url('/siswa/' . $row->id . '/edit') }}">Edit</a>
</td>
<td>
<form action = "{{ url('/siswa', $row->id) }}" method = "POST">
@method('DELETE')
@csrf
<button class = "btn btn-danger" type = "submit">Delete</button></td>

Setelah kita menambahkan codingan tersebut pada form utama yang telah kita buat. Dapat diketahui dalam codingan {{ url('/siswa/' . $row->id . '/edit') }} bertujuan untuk menghubungkan form utama dengan $row-> id yang dipilih oleh user kemudian akan menuju ke dalam form edit. Sehingga membentuk url seperti ini setelah ktia menekan button tersebut :

http://localhost/laravel5.7-fresh/public/siswa/1/edit

Nah url diatas adalah contoh ketika kita menekan button edit pada baris pertama. Begitu pula dengan button untuk delete, hanya saja dalam button delete system akan langsung menghapus kolom yang kita pilih dengan menggunakan :

<form action = "{{ url('/siswa', $row->id) }}" method = "POST">
@method('DELETE')
@csrf

Studi Kasus 2 (Menerapkan Edit & Delete pada Table Kelas)

Bagaimanakah hasilnya setelah kita menerapkan codingan diatas kedalam suatu form dan table yang telah kita buat?

- Edit Data Step 1 (Before)

- Edit Data Step 2 (Editing)


- Edit Data Step 3 (After)

Pada Step 2, dapat kita lihat bahwa function dari old input telah berfungsi dengan baik karena pada saat kita menekan button edit, old input membuat isi dari data sebelumnya mengisi form tersebut dengan sendirian. Begitu Pula Dengan Delete.

- Delete Step 1 (Before)

- Delete Step 2 (After)


Cukup sekian yang dapat saya sampaikan, mohon maaf bila ada kesalahan dalam pengetikan maupun penjelasan. See You Next!

Wassalamu'alaikum Wr. Wb.

Komentar