Laravel: Update Jika Sudah Ada Data Atau Insert Jika Tidak

Adakalanya kita perlu update data jika sudah tersedia dan insert data baru jika data tersebut belum ada.

Misalnya saja saat menambahkan user baru menggunakan email sebagai primary key kita bisa mengecek apakah email tersebut sudah terdaftar atau belum. Jika belum ada maka kita perintahkan eloquent untuk membuat data baru namun jika sudah ada maka cukup update nama dan status.

Cara untuk melakukan pekerjaan ini tidak perlu melakukan pengecekan manual dengan membuat kueri tersendiri melainkan dapat menggunakan method updateOrCreate() yang terdapat pada model laravel.

Contoh penggunaannya adalah sebagai berikut:

User:: updateOrCreate(
 [
  'email'=> 'nusagates@gmail.com'
 ],
 [
  'name' => 'Ahmad Budairi',
  'status => 'active',
  'password => bcrypt('password123'),
  'role' => 'member'
 ]
);

Pada contoh di atas dapat dilihat bahwa method updateOrCreate() memiliki dua argumen yang masing-masing berupa array.

Argumen pertama berisi key yang digunakan untuk mengecek. Item array ini boleh lebih dari satu. Sedangkan argumen kedua adalah data tambahan yang akan diperbarui pada user yang cocok dengan nilai key yang digunakan. Jika tidak ada maka akan membuat data baru.

Pada contoh di atas akan terjadi proses sebagai berikut:

  • Mengecek apakah sudah ada user terdaftar menggunakan email nusagates@gmail.com
  • Jika belum ada maka akan membuat user baru menggunakan email tersebut beserta data tambahan yang dimasukkan pada argumen kedua
  • Jika sudah ada user menggunakan email tersebut maka field yang cocok pada argumen kedua akan diperbarui sesuai nilai (value) yang disediakan

Komentar