Laravel : 3. Update, Delete
Di artikel sebelumnya kita sudah berhasil menambahkan data kedalam Database kita melalui halaman tambah, sekarang kita akan membuat fungsi untuk mengedit atau mengupdate data yang sudah kita tambahkan.
Sebelum lanjut, coba kalian pergi ke halaman daftar.blade.php , disana kalian akan melihat code berikut
resources > views > daftar.blade.php
<a href="{{url('/edit')}}" class="btn btn-xs btn-primary">Edit</a>
Ubah code menjadi seperti ini
<a href="/daftar/edit/{{ $student->id_siswa }}" class="btn btn-xs btn-primary">Edit</a>
Pada link edit tersebut kita memerintahkan halaman utama ke route ‘/daftar/edit’ dengan mengirimkan data id_siswa yang mau diedit.
Sekarang kita akan menuju ke web.php untuk mengubah route dari url edit.
routes > web.php
Kalian akan melihat code ini
Route::get('edit', function () {
return view('edit');
});
Kalian ubah code diatas menjadi seperti ini
Route::get('/daftar/edit/{id}', 'DaftarController@edit');
Didalam route itu, kita mengistilahkan id_siswa dengan id , setelah itu kita perintahkan untuk menjalankan method edit yang ada didalam DaftarController. nah, data id nya kita tangkap dari controller. Setelah itu silahkan buka DaftarController , lalu isi method edit() dengan code berikut
app > Http > Controllers > DaftarController.php
public function edit($id)
{
$students = DB::table('students')->where('id_siswa', $id)->first();
return view('edit', compact('students'));
}
Nah selanjutnya kita akan mengubah beberapa code yang terdapat didalam edit.blade.php . silahkan buka halaman edit.blade.php, lalu kalian ubah code yang terdapat di bagian form. ubah menjadi seperti code dibawah ini
resources > views > edit.blade.php
<form action="/daftar/update" method="post">{{csrf_field()}}<div class="form-group"><input class="form-control" type="hidden" name="id" id="id" value="{{ $students->id_siswa}}"><label for="nama_siswa">Nama Siswa</label><input class="form-control @error('nama_siswa') is-invalid @enderror" type="text" name="nama_siswa" value="{{ $students->nama_siswa }}" id="nama_siswa" placeholder="Masukkan Nama Siswa"> @error('nama_siswa')<div class="invalid-feedback">{{ $message }}</div>@enderror</div><div class="form-group"><label for="jurusan">Jurusan</label><input class="form-control @error('jurusan') is-invalid @enderror" type="text" name="jurusan" value="{{ $students->jurusan }}" id="jurusan" placeholder="masukkan Nama Jurusan">@error('jurusan')<div class="invalid-feedback">{{ $message }}</div>@enderror</div><div class="form-group"><label for="angkatan">Angkatan</label><input class="form-control @error('angkatan') is-invalid @enderror" type="text" name="angkatan" value="{{ $students->angkatan }}" id="angkatan" placeholder="masukkan tahun angkatan">@error('angkatan')<div class="invalid-feedback">{{ $message }}</div>@enderror</div><div class="form-group"><label for="kelas">Kelas</label><input class="form-control @error('kelas') is-invalid @enderror" type="text" name="kelas" value="{{ $students->kelas }}" id="kelas" placeholder="masukkan kelas">@error('kelas')<div class="invalid-feedback">{{ $message }}</div>@enderror</div><div class="form-group float-right"><button class="btn btn-lg btn-danger" type="reset">Reset</button><button class="btn btn-lg btn-primary" type="submit">Submit</button></div></form>
coba kalian perhatikan didalam tag form diatas, terdapat code action=”/daftar/update” , lalu fungsinya apa? jadi ketika kalian klik submit di formnya, maka data yang kalian submit tersebut akan pergi ke route /daftar/update. nah sekarang kita buat routenya dulu, silahkan pergi ke web.php, lalu tambahkan route berikut dibawah route edit
routes > web.php
Route::post('/daftar/update', 'App\Http\Controllers\DaftarController@update');
pada route kali ini kita diperintahkan untuk menjalankan method update() dalam controller DaftarController.php. Sekarang kita isi dulu method update yang terdapat di DaftarController.php. Silahkan kalian pergi ke DaftarController.php
app > Http > Controllers > DaftarController.php
Lalu isi dengan code berikut
public function update(Request $request)
{
$this->validate($request, [
'nama_siswa' => 'required',
'jurusan' => 'required',
'angkatan' => 'required',
'kelas' => 'required',
]);
DB::table('students')->where('id_siswa', $request->id)->update([
'nama_siswa' => $request->nama_siswa,
'jurusan' => $request->jurusan,
'angkatan' => $request->angkatan,
'kelas' => $request->kelas,
]);return redirect('/daftar')->with('status', 'Data siswa Berhasil Diubah');
}
Codenya hampir sama ketika kita membuat method store dibagian artikel create , perbedaannya terdapat pada fungsi didalamnya, jika di method store kita memakai fungsi insert untuk memasukan data , maka di method update kita memakai fungsi update untuk mengubah atau mengupdate data berdasarkan id yang sudah kita pilih.
Nah, sekarang kita coba, apakah fungsi update yang sudah kita buat berhasil atau tidak, sekarang kita coba edit siswa yang bernama andi dengan cara klik tombol edit dibagian actionnya.
http://127.0.0.1:8000/daftar
Sekarang kita akan mengganti kelasnya dari “4FC9” menjadi “3FC9”
Klik submit jika sudah selesai, dan Taraaa!! data kelas andi sudah berubah
Fungsi update kita sudah berhasil, nah sekarang kita akan membuat fungsi delete. Oh ya, fungsi delete saya gabung di satu artikel yang sama dengan fungsi update karena fungsi delete lebih pendek dibanding ketiga fungsi lainnya.
Sekarang kita pergi ke daftar.blade.php untuk mengubah sedikit code dibagian tombol delete.
resources > views > daftar.blade.php
ubah kode dibawah
<a href="#" class="btn btn-xs btn-danger" onclick="return confirm('yakin?');" >Delete</a>
menjadi
<a href="/daftar/destroy/{{$student->id_siswa}}" class="btn btn-xs btn-danger" onclick="return confirm('yakin?');">Delete</a>
</td>
pada saat kalian klik tombol delete / hapus, maka kalian akan diarahkan ke route ‘/daftar/destroy’ sambil mengirimkan data id yang mau dihapus.
Lalu kita buat routenya di web.php , letakan code berikut dibawah route update
routes > web.php
Route::get('/daftar/destroy/{id}', 'App\Http\Controllers\DaftarController@destroy');
Di route tersebut, kita menangkap id dari siswa lalu kita kirimkan ke method destroy() untuk dihapus. Sekarang kita akan buat method destroy() didalam DaftarController.php
app > Http > Controllers > DaftarController.php
public function destroy($id)
{
DB::table('students')->where('id_siswa', $id)->delete();
return redirect('/daftar')->with('status', 'Data Siswa Berhasil DiHapus');
}
Cara menangkap id dari siwanya sama dengan cara menangkap id di method edit(), bedanya disini kita memakai fungsi delete() untuk menghapus datanya. setelah itu kita perintahkan untuk mengalihkan halamannya ke route /daftar.
Sekarang kita akan mencoba apakah fungsi deletenya berhasil atau tidak, kita akan mencoba delete siswa yang bernama jack
http://127.0.0.1:8000/daftar
Saat kita menghapus, maka akan ada peringatan seperti ini
Dan taraaa!!, siswa yang bernama jack sudah kita hapus datanya.
Dan akhirnya kita sudah menyelesaikan CRUD yang terdiri dari 4 fungsi yaitu Create , Read , Update , Delete. untuk lebih advancenya , kalian bisa expand lebih dalam lagi . artikel mengenai CRUD akan berakhir disini, nantikan artikel berikutnya yaaa
Post a Comment