Rumah  >  Artikel  >  pembangunan bahagian belakang  >  ## 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
Patricia Arquetteasal
2024-10-25 07:32:28543semak imbas

## 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;
}

Ini gagal dalam ujian, mengembalikan:

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

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,

Peraturan untuk Mencipta:

Teruskan seperti biasa dengan peraturan unik:

'email' => 'unique:users,email_address',

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!

Kenyataan:
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