Jika teman-teman sudah terbiasa menggunakan Laravel, tentu saja sudah tidak asing dengan fungsi-fungsi Elequent
seperti make()
, update()
, create()
dan save()
. Tetapi teman-teman sudah tau belum jika selain fungsi itu ada beberapa fungsi tambahan yang berguna untuk menambah maupun merubah data dengan cara yang lebih sederhana yang diawali dengan keyword firstOr
dan updateOr
?
firstOrNew
fungsi ini cukup berguna ketika kita harus mencari satu data dan jika tidak ditemukan maka kita membuat data baru.
pengguna = User::firstOrNew(['email'=>$re->email]);
$pengguna->name = $req->name;
$pengguna->save();
kita juga bisa membuatnya menjadi lebih simple, dengan menjadikan data yang akan dicari kedalam bentuk array
$pengguna = User::firstOrNew([
'email'=>$re->email,
'name'=>$req->name
]);
$pengguna->save();
firstOrCreate
tidak jauh berbeda dengan fungsi yang sebelumnya, hanya saja fungsi ini terbilang lebih simple dari saudaranya firstOrNew()
$pengguna = User::firstOrCreate([
'email'=>$re->email,
'name'=>$req->name
]);
kedua fungsi diatas bertujuan sama, yaitu cari data user berdasarkan email
dan nama
, jika tidak ada maka buat satu record baru dengan email
dan nama
yang menjadi parameter, tetapi bagaimana jika data yang akan disimpan ternyata berbeda ? kita bisa menambahkan parameter baru berbentuk array
, misalnya seperti
$pengguna = User::firstOrCreate(
[
'email'=>$re->email,
'name'=>$req->name
],
[
'alamat'=>$req->alamat,
'nomor_hp'=>$req->nomor_hp
]
);
updateOrCreate
secara umum tidak berbeda dengan kedua fungsi sebelumnya, hanya saja fungsi updateOrCreate
untuk merubah data, dan jika data yang akan dirubah tidak ditemukan maka secara otomatis akan membuat satu data baru.
$pengguna = User::updateOrCreate(
[
'email'=>$re->email,
'name'=>$req->name
],
[
'alamat'=>$req->alamat,
'nomor_hp'=>$req->nomor_hp
]
);
jika kita terjemahkan, cari user yang punya email
dan nama
berdasarkan request()
jika ditemukan update kolom alamat
dan nomor_hp
tetapi jika tidak ditemukan buat data baru.