Header Ads

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
Tampilan halaman edit

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
Akses tombol delete di bagian action pada siswa yang bernama jack

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

Tidak ada komentar

Diberdayakan oleh Blogger.