ホームページ >バックエンド開発 >PHPチュートリアル >更新中に独自の制約を使用して Laravel モデルを再検証するにはどうすればよいですか?

更新中に独自の制約を使用して Laravel モデルを再検証するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-24 17:49:021019ブラウズ

How to Revalidate Laravel Models with Unique Constraints During Updates?

更新中に固有の制約を使用して Laravel モデルを再検証する

固有の検証ルールを強制する Laravel Eloquent モデルを操作する場合、モデルを更新すると検証がトリガーされることがあります変更された値が既存のレコードと一致する場合はエラーになります。この問題に対処するために、開発者は更新時にモデルの属性を再検証することがよくあります。ただし、このアプローチでは、必要なルール検証で問題が発生する可能性があります。

この例では、リポジトリ内の update メソッドは、validate メソッドを使用してモデルの属性を検証します。ただし、この検証では、新しいモデルの作成と同じ独自のルールが適用されます。その結果、既存の値でモデルを更新すると検証に失敗します。

この問題を解決するには、更新されるインスタンスの ID を無視するように検証ルールをカスタマイズできます。

検証ルールのカスタマイズ:

  1. モデル インスタンスの ID をバリデーターに渡します:
<code class="php">$user = $this->findById($id);
$user->fill($data);
$this->validate($user->toArray(), ['id' => $user->id]);</code>
  1. バリデーターでパラメーターを使用して、更新と作成を区別します:
<code class="php">// Validation rules
'username' => Validator::make($data, [
    'username' => 'required|unique:users,username,' . ($id ?? null),
]);</code>
  1. 更新の場合、指定された ID を無視するように一意のルールを強制します:
<code class="php">'username' => 'required|unique:users,username,' . ($id ?? null),</code>
  1. For作成時には、標準の一意のルールを使用します:
<code class="php">'username' => 'required|unique:users,username',</code>

このカスタマイズを組み込むことで、フレームワークは既存の ID の一意の制約を無視し、重複による検証エラーを引き起こすことなくモデルを更新できるようになります。フィールド値。

以上が更新中に独自の制約を使用して Laravel モデルを再検証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。