Sabtu, 10 Agustus 2019

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.

Tidak ada komentar:

Posting Komentar