如何使用唯一的驗證規則更新 Laravel 模型而不出現錯誤?

Patricia Arquette
發布: 2024-10-24 19:18:30
原創
559 人瀏覽過

How to Update a Laravel Model with Unique Validation Rules Without Errors?

Laravel:使用唯一的驗證規則更新模型

在Laravel 中,模型更新期間驗證欄位對於確保資料完整性至關重要。但是,當更新現有記錄時,唯一的驗證規則可能會導致問題。

請考慮 Repository 類別中的以下程式碼:

<code class="php">public function update($id, $data) {
    $user = $this->findById($id);
    $user->fill($data);
    $this->validate($user->toArray());
    $user->save();

    return $user;
}</code>
登入後複製

此程式碼嘗試重新驗證模型的字段,包括諸如「使用者名稱」和「電子郵件」。但是,當嘗試使用現有唯一值更新記錄時,此方法可能會導致驗證錯誤。

要解決此問題,我們需要從驗證中排除當前記錄,以允許在不違反唯一約束的情況下進行更新。我們可以透過將正在更新的實例的 id 附加到驗證器來實現這一點。具體方法如下:

  1. 傳遞實例的id:
    將正在更新的實例的id 傳遞給更新方法:

    <code class="php">public function update($id, $data) {
        $user = $this->findById($id);
        $user->fill($data);
        $this->validate($user->toArray(), ['id' => $id]);
        $user->save();
    }</code>
    登入後複製
  2. 從驗證中排除目前記錄:
    在驗證器中,我們使用id 參數來偵測是否正在更新或建立資源:

    • 更新: 對於唯一驗證規則,將,{$id} 附加到規則以排除目前記錄。例如:

      <code class="php">'email' => 'unique:users,email,{$id}',</code>
      登入後複製
    • 建立: 對於唯一驗證規則,請勿包含 id。例如:

      <code class="php">'email' => 'unique:users,email',</code>
      登入後複製

透過遵循這些步驟,我們可以優雅地更新 Laravel 模型,同時確保遵守唯一的驗證約束。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!