首頁  >  文章  >  後端開發  >  ## 如何在 Laravel 中使用獨特的驗證規則更新模型而不出現錯誤?

## 如何在 Laravel 中使用獨特的驗證規則更新模型而不出現錯誤?

Patricia Arquette
Patricia Arquette原創
2024-10-25 07:32:28543瀏覽

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

Laravel:使用獨特的驗證規則更新模型

在 Laravel 中更新模型時,透過驗證確保資料完整性至關重要。然而,使用者名稱和電子郵件等屬性的獨特驗證規則可能會帶來挑戰。

問題陳述

在假設的使用者模型中,使用者名稱和電子郵件具有唯一的驗證規則,使用儲存庫更新記錄可能會觸發驗證錯誤:

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

測試失敗,回傳:

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

解決方案:忽略目前實例的唯一規則

為了優雅地解決此問題,可以忽略目前正在更新的實例的唯一驗證規則。

  1. 將實例 ID 傳遞給驗證器:

    在儲存庫方法中,將正在更新的實例的 ID 傳遞給 validate 方法。

  2. 在驗證器中使用參數來區分建立和更新:

    在驗證規則中新增參數,指示該操作是更新還是創建。

更新規則:

強制唯一規則忽略目前ID:

'email' => 'unique:users,email_address,' . $userId,

建立規則:

照常進行唯一規則:

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

透過合併這些更改,可以在不妨礙現有記錄更新的情況下強制執行唯一驗證規則。

以上是## 如何在 Laravel 中使用獨特的驗證規則更新模型而不出現錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn