Rumah > pembangunan bahagian belakang > tutorial php > ## Bagaimana untuk Mengemas kini Model dengan Peraturan Pengesahan Unik dalam Laravel Tanpa Ralat?

## Bagaimana untuk Mengemas kini Model dengan Peraturan Pengesahan Unik dalam Laravel Tanpa Ralat?

Patricia Arquette
Lepaskan: 2024-10-25 07:32:28
asal
640 orang telah melayarinya

## How to Update Models with Unique Validation Rules in Laravel Without Errors?

Laravel: Mengemas kini Model dengan Peraturan Pengesahan Unik

Apabila mengemas kini model dalam Laravel, memastikan integriti data melalui pengesahan adalah penting. Walau bagaimanapun, peraturan pengesahan unik pada atribut seperti nama pengguna dan e-mel boleh menimbulkan cabaran.

Pernyataan Masalah

Dalam model Pengguna hipotesis yang nama pengguna dan e-mel mempunyai peraturan pengesahan unik, mengemas kini rekod menggunakan repositori boleh mencetuskan ralat pengesahan:

public function update($id, $data) {
    $user = $this->findById($id);
    $user->fill($data);
    $this->validate($user->toArray());
    $user->save();
    return $user;
}
Salin selepas log masuk

Ini gagal dalam ujian, mengembalikan:

ValidationException: {"username":["The username has already been taken."],"email":["The email has already been taken."]}
Salin selepas log masuk

Penyelesaian: Mengabaikan Peraturan Unik untuk Contoh Semasa

Untuk menangani isu ini dengan elegan, peraturan pengesahan unik boleh diabaikan untuk tika semasa yang sedang dikemas kini.

  1. Lepaskan ID tika kepada pengesah:

    Dalam kaedah repositori, hantar ID kejadian yang sedang dikemas kini kepada kaedah pengesahan.

  2. Gunakan parameter dalam pengesah untuk membezakan antara penciptaan dan kemas kini:

    Dalam peraturan pengesahan, tambahkan parameter yang menunjukkan sama ada operasi itu adalah kemas kini atau ciptaan.

Peraturan untuk Kemas Kini :

Paksa peraturan unik untuk mengabaikan ID semasa:

'email' => 'unique:users,email_address,' . $userId,
Salin selepas log masuk

Peraturan untuk Mencipta:

Teruskan seperti biasa dengan peraturan unik:

'email' => 'unique:users,email_address',
Salin selepas log masuk

Dengan memasukkan perubahan ini, peraturan pengesahan unik boleh dikuatkuasakan tanpa menghalang kemas kini untuk rekod sedia ada.

Atas ialah kandungan terperinci ## Bagaimana untuk Mengemas kini Model dengan Peraturan Pengesahan Unik dalam Laravel Tanpa Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan