Laravel: Cara Insert Multiple Record Sekaligus

Ada kalanya dalam membuat aplikasi kita perlu menyimpan banyak data sekaligus. Misalnya saja saat membuat bulk upload produk yang memungkinkan pengguna menambahkan produk secara masal menggunakan template excel.

Selain menggunakan looping secara manual untuk menyimpan data ke dalam database, kita bisa menggunakan fungsi insert() yang dapat diakses melalui Model.

Untuk dapat menggunakan fungsi ini, kita bisa menyimpan data-data itu ke dalam array. Contoh:

$products =[
 [
  'name'  => 'Produk 1',
  'price' => 15000,
  'stock' => 5
 ],
 [
  'name'  => 'Produk 2',
  'price' => 5000,
  'stock' => 10
 ],
 [
  'name'  => 'Produk 3',
  'price' => 6000,
  'stock' => 15
 ]
]

Selanjutnya, kita bisa menggunakan array data tersebut sebagai argumen dari fungsi insert seperti di bawah ini:

Product::insert($products);

Perlu diingat bahwa penggunakan fungsi insert ini berbeda dengan fungsi create. Kalau fungsi create akan mengisi kolom created_at dan updated_at secara otomatis maka penggunaan insert harus mengisi kedua kolom tersebut secara manual.

Sehingga, kalau kita menggunakan fungsi insert menginginkan kedua kolom tersebut tidak null harus menambahkan nilainya ke dalam array. Contoh:

 [
  'name'       => 'Produk 2',
  'price'      => 5000,
  'stock'      => 10,
  'created_at' => now(),
  'updated_at' => now()
 ]

Pada contoh diatas, fungsi now() merupakan bawaan dari Carbon yang bisa diakses secara global. Selain itu, kita juga bisa menggunakan fungsi date pada php. Contoh:

 [
  'name'       => 'Produk 2',
  'price'      => 5000,
  'stock'      => 10,
  'created_at' => date('Y-m-d H:i:s'),
  'updated_at' => date('Y-m-d H:i:s')
 ]

Komentar