Sabtu, 10 Agustus 2019

Update Mutiple Data dalam 1 Query Sekaligus

Sebelumnya saya pernah posting tentang cara Insert Multiple Data dalam 1 Query Sekaligus. Kali ini, yang ingin saya bagikan adalah bagaimana caranya update beberapa data sekaligus. Jadi, dengan menggunakan cara ini, kita nggak perlu melakukan looping untuk update data satu persatu, karena Query Builder sudah menyediakan fungsinya.

Nama fungsinya mirip dengan insert_batch. Kalian bisa tebak apa nama fungsinya? Ya betul, nama fungsinya adalah update_batch. Fungsi tersebut memungkinkan kita untuk dapat meng-update beberapa data sekaligus
Ada 3 parameter yang diperlukan fungsi tersbut. Pertama adalah nama table, kedua data yang akan diupdate, dan yang ketiga adalah nama field primary key.

Kang, masih bingung nih, bisa dikasi contoh gak? baiklah, perhatikan contoh berikut:

Parameter pertama sudah jelas ya nama tabel, yaitu kita akan meng-update data di table mana. Parameter kedua adalah data yang akan kita update. Bentuknya hampir sama dengan insert_batch. Anda bisa menggunakan array atau object.  Sedangkan yang ketiga key kriteria yang kita gunakan untuk update. Di potongan kode di atas, kita menggunkana kriteria item_id.

Mirip bukan dengan fungsi insert_batch? yang membedakan adalah parameter ketiga, yaitu ada field key, item_id.

Ok, mari kita ambil contoh. Misal kita akan mengupdate semua stok atau quantity produk jadi 0. Daripada kita update satu persatu, yang hanya akan membuat database kita bengek, mari kita buat dalam satu transaksi sekaligus.

Selamat mencoba ya

Insert Multiple Data Sekaligus dalam 1 Query

Kadang-kadang dalam satu form kita butuh input data banyak sekaligus, misal data sales order. Data seperti itu, kan minimal punya 1 item, dan mungkin paling banyak 100 item. Ya, bisa jadi lebih dari itu. Tapi, saya belum kebayang form-nya seperti apa. hehe

Namun, hingga saat ini, saya masih sering menemukan kode, kurang lebih seperti ini:
Ya memang,  cara itu nggak salah, tapi tidak efektif. Kenapa? ketika melakukan insert data ke database, tentu aplikasi memerlukan waktu, seperti membuka koneksi, generate query string, lalu menjalankan query tersebut. Bila data yang akan kita insert/simpan itu jumlahnya 10, maka applikasi itu akan melakukan rangkaian proses itu sebanyak 10 kali. Itu hanya untuk 1 request, bagaimana jika ada yang 100 melakukan request yang sama. Tentu ini akan cukup banyak memakan waktu, bukan?

Sebenarnya, class Query Builder ada fungsi insert_batch(), yaitu fungsi untuk melakukan insert dengan banyak data sekaligus.

Fungsi tersebut memerlukan 2 parameter, yaitu nama tabel dan data dalam bentuk array atau object.

"Baiklah, sekarang saya tahu ada fungsi insert_batch, tapi saya males baca dokumentasinya, bisa kasih contoh nggak?" coba perhatikan potongan code class model berikut:

Gampangkan ya? yang membedakan dengan insert biasa adalah type parameternya. Selain itu, di fungsi tersebut, saya sengaja menambahkan exception jika parameternya bukan array. Tujuannya adalah agar penggunannya aware bahwa fungsi itu butuh parameter dalam bentuk array. Tidak boleh string, number, atau object. Jadi, jika ada yang menggunakan fungsi tersebut dengan melewatkan parameter yang tidak sesuai, maka errornya akan jelas.

Begitulah cara untuk melakukan insert data sekaligus dengan menggunakan Query Builder. Jadi, kita nggak perlu lagi tu melakukan looping memanggil fungsi insert berkali-kali seperti kode paling atas.

"Ok, bisa dikasi contoh nggak cara menggunakannya di controller kaya gimana?" Baiklah, gak ribet ko, malah lebih sederhana. Kita hanya melewatkan data tersebut dalam bentuk array. Berikut contohnya:

Gimana? lebih simple dan mudah bukan?

"Ya, sepertinya mudah, lalu bagaimana kalo untuk update?" Oh, itu sama mudahnya, tapi saran saya coba praktikan dulu.

"Lanjut ada deh, gimana kang?" Ok, ok, silahkan lanjutkan aja membaca disni: Update Multiple Data dalam 1 Query sekaligus.