Validasi Update Unique Data Laravel

Alfajri
2 min readOct 21, 2023

--

Photo by Jan Antonin Kolar on Unsplash

Laravel telah menyediakan validasi agar data yang kita input harus berbeda dengan data yang sudah ada ( unique ). Implementasinya juga sangat mudah yaitu dengan menambahkan validasi pada controller

$validator = Validator::make($request->all(), [
'email' => 'email'|'unique:customers',
.....
]);

Kode diatas memvalidasi jika ada input email yang sama pada tabel customers, jika ada input email yang sama maka akan menampilkan error.

Namun bagaimana jika kita ingin mengupdate data telepon dengan email yang telah ada ? Jika kita mengrim email kita sekarang, maka akan terdeteksi input email ganda.

Contohnya :

Customer bernama Adi memiliki data berikut :

id : 1
email : adi@gmail.com
telepon : 0891982912

Case 1 :

Adi ingin mengubah nomor teleponya, maka ia akan mengirimkan data id, email dan telepon yang baru ke controller. Jika email diberi validasi

‘email’ => ‘email’|’unique:customers’

Maka email adi yang lama akan terdeteksi email unik dan akan membuat update data gagal.

Case 2 :

Tidak diberi validasi email, jika tidak diberi validasi maka Adi dapat mengubah telepon dan juga email baru. Namun ini berpotensi membuat data ganda pada database.

Solusi :

Solusi dari kasus tersebut ialah menggunakan :

$validator = Validator::make($request->all(), [
'email' => ['email',Rule::unique('users')->ignore($user->id, 'user_id')]
.....
]);

validasi diatas akan mengecualikan email Adi dengan mengirim id pada parameter ignore( ‘ id_adi’, ‘nama colomn id pada tabel‘ )

Dengan ini maka Adi dapat mengubah data telepon walau memasukkan email yang sama…

--

--

Alfajri
Alfajri

Written by Alfajri

Halo saya feri, tertarik pada teknologi dan seni. Ingin berbagi cerita dan pengalaman serta mencoba belajar menulis

No responses yet