Pendahuluan
Masih melanjutkan materi sebelumnya tentang tambah data ke database dengan laravel, maka ini kita akan membahas tentang update database. Jadi diharapkan anda mengikuti materi sebelumnya agar lebih memahami materi ini.
Update merupakan satu metode yang dibangun oleh development agar user bisa berinteraksi dengan dengan sistem untuk melakukan manipulasi data atau merubah data yang ada di database dengan menggunakan perintah update().
Laravel sendiri menyediakan script yang lebih ringkas dan sederhana di dalam update data. Namun sebelum lanjut pastikan anda sudah membuka projek kita sebelumnya yang bernama latihanLaravel. Marik ita bahas langkahnya:
Langkah-langkah Update Data
1. Buka kembali file view => koleksi.blade.php. Dini kita akan menambahkan script untuk link edit. Perhatikan script berikut yang sudah kita buat sebelumnya:
<!DOCTYPE html><html lang="en"><head><title>CRUD Laravel</title><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"></head><body class="bg-dark"><div class="container bg-white p-5 mt-5"><h3>{{ $title }}</h3><table class="table table-striped border"><thead><tr><th>NO</th><th>KODE</th><th>JUDUL</th><th>DESKRIPSI</th><th>GAMBAR</th><th>OPSI</th></tr></thead><tbody>{{ $no=1 }}@foreach( $koleksi as $k)<tr><td>{{ $no++ }}</td><td>{{ $k['kode'] }}</td><td>{{ $k['judul'] }}</td><td>{{ $k['deskripsi'] }}</td><td><img src="/assets/images/{{ $k['gambar'] }}" class="w-100" style="object-fit:cover; height:50px;"></td><td><a href="" class="btn btn-info">Edit</a><a href="" class="btn btn-danger">Hapus</a></td></tr>@endforeach</tbody><tfoot><th><td><a class="btn btn-outline-success" href="/tambah"> + Tambah Data </a></td></th></tfoot></table></div></body></html>
Terdapat script
<a href="" class="btn btn-info">Edit</a>
Nah sekarang kita Ganti menjadi:
<a href="/edit/{{ $k['id']}}" class="btn btn-info">Edit</a>
Perintah href="/edit/...." merupakan nama link yang akan di panggil, sedangkan ... {{ $k['id']}} digunakan untk menverifikasi data yang akan di panggil.
2. Buka file Routes -> web.php dan buatlah satu route untuk jalur edit seperti berikut:
<?phpuse Illuminate\Support\Facades\Route;use App\Http\Controllers\KoleksiController;Route::get('/', [KoleksiController::class, 'index']);Route::get('/tambah', function () {return view('tambah-koleksi');});Route::post('/simpan', [KoleksiController::class, 'simpan']);Route::post('/edit/{id}', [KoleksiController::class, 'edit']); //Tambahkan script ini
Perhatikan pada ('edit/{id}'). Perintah {id} ini merupakan variabel yang akan menampung data yang di kirim dari link yang di buat pada view tadi. Variabel ini akan meneruskan data ke controller nantinya.
3. Sekarang silahakan buka file Controller => KoleksiController.php. Kita akan membuat method baru dengan nama edit. Tambahkan sebuah method seperti berikut:
public function edit($id){$data = ['koleksi' => koleksi::where('id', $id)->first()];return view('edit_koleksi', $data);}
Method edit($id), ($id) merupakan variabel yang kita buat untuk menampung identitas yang di kirim dari route tadi. Sedangkan $data[...] merupakan array yang menampung data di database yang kita panggil menggunakan perintah Koleksi (ini nama Model)::where('id' (ini identitas dari tabel koleksi), $id(ini variabel yang di miliki oleh method edit)->first()(perintah untuk menampilkan satu record))
4. Buatlah satu file baru di dalam folder view dengan nama "edit_koleksi.blade.php" dan ketikkan script berikut:
<!DOCTYPE html><html lang="en"><head><title>CRUD Laravel</title><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"></head><body class="bg-dark"><div class="container bg-white p-5 mt-5"><h3>Edit Data Koleksi</h3><hr><form method="get" action="/update/{{ $koleksi['id'] }}" enctype="multipart/form-data">@csrf<div class="row mt-3"><label class="col-3">Kode</label><div class="col"><input type="number" name="kode" class="form-control" value="{{ $koleksi['kode'] }}"></div></div><div class="row mt-3"><label class="col-3">Judul</label><div class="col"><input type="text" name="judul" class="form-control" value="{{ $koleksi['judul'] }}"></div></div><div class="row mt-3"><label class="col-3">Deskripsi</label><div class="col"><textarea name="deskripsi" class="form-control" rows="5">{{ $koleksi['deskripsi'] }}</textarea></div></div><div class="row mt-3"><div class="col"></div><div class="col"><button type="submit" class="btn btn-success">Simpan Perubahan</button></div></div></form></div></body></html>
Perhatikan pada masing-masing input terdapat perintah $koleksi['.....']. Variabel $koleksi kita dapatkan dari array yang dikirim di controller tadi. Jadi nama variabel ini harus sama dengan yang ada di KoleksiController.php.
5. Buka kembali web.php dan tambahkan route berikut
6. Buka KoleksiController.php dan buatlah method baru seperti berikut:
public function update($id, Request $req){$data = ['kode' => $req->kode,'judul' => $req->judul,'deskripsi' => $req->deskripsi];Koleksi::where('id', $id)->update($data);return redirect()->to('/');}
Perhatikan pada method updete(). Disini kita tambah sebuah atribut dengan nama Request. Atribut ini bertukan untuk menangani data yang masuk ke dalam method. Sedangkan $req merupakan variabel yang kita buat sendiri untuk menangkap data input.
Sekarang coba jalankan programnya. Coba edit salah satu data yang ada di tampilkan koleksi yang telah kita rancang. Jika lancar maka data akan berubah.