Laravel: Mengemas kini Model dengan Peraturan Pengesahan Unik
Dalam Laravel, mengesahkan medan semasa kemas kini model adalah penting untuk memastikan integriti data. Walau bagaimanapun, peraturan pengesahan unik boleh menyebabkan isu semasa mengemas kini rekod sedia ada.
Pertimbangkan kod berikut dalam kelas Repositori:
<code class="php">public function update($id, $data) { $user = $this->findById($id); $user->fill($data); $this->validate($user->toArray()); $user->save(); return $user; }</code>
Kod ini cuba mengesahkan semula medan model, termasuk medan unik seperti "nama pengguna" dan "e-mel." Walau bagaimanapun, pendekatan ini mungkin membawa kepada ralat pengesahan apabila cuba mengemas kini rekod dengan nilai unik sedia ada.
Untuk menyelesaikan isu ini, kami perlu mengecualikan rekod semasa daripada pengesahan untuk membenarkan kemas kini tanpa melanggar kekangan unik. Kita boleh mencapai ini dengan menambahkan id contoh yang sedang dikemas kini kepada pengesah. Begini caranya:
Lepaskan id contoh:
Lepaskan id contoh yang sedang dikemas kini kepada kaedah kemas kini:
<code class="php">public function update($id, $data) { $user = $this->findById($id); $user->fill($data); $this->validate($user->toArray(), ['id' => $id]); $user->save(); }</code>
Kecualikan rekod semasa daripada pengesahan:
Dalam pengesah, kami menggunakan parameter id untuk mengesan sama ada kami mengemas kini atau mencipta sumber:
Mengemas kini: Untuk peraturan pengesahan unik, tambahkan ,{$id} pada peraturan untuk mengecualikan rekod semasa. Contohnya:
<code class="php">'email' => 'unique:users,email,{$id}',</code>
Mencipta: Untuk peraturan pengesahan unik, jangan sertakan id. Contohnya:
<code class="php">'email' => 'unique:users,email',</code>
Dengan mengikuti langkah-langkah ini, kami boleh mengemas kini model Laravel dengan elegan sambil memastikan kekangan pengesahan unik dihormati.
Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini Model Laravel dengan Peraturan Pengesahan Unik Tanpa Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!