## Laravel で独自の検証ルールを使用してモデルをエラーなく更新するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-25 07:32:28
オリジナル
542 人が閲覧しました

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

Laravel: 独自の検証ルールを使用したモデルの更新

Laravel でモデルを更新する場合、検証を通じてデータの整合性を確保することが重要です。ただし、ユーザー名や電子メールなどの属性に対する独自の検証ルールは課題を引き起こす可能性があります。

問題ステートメント

ユーザー名と電子メールに独自の検証ルールがある仮想の User モデルでは、リポジトリを使用してレコードを更新すると、検証エラーが発生する可能性があります:

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!