ホームページ >バックエンド開発 >PHPチュートリアル >## Laravel で独自の検証ルールを使用してモデルをエラーなく更新するにはどうすればよいですか?
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."]}
解決策: 現在のインスタンスの一意のルールを無視する
この問題に適切に対処するには、更新中の現在のインスタンスに対して一意の検証ルールを無視できます。
インスタンス ID をバリデーターに渡します。
リポジトリ メソッドで、更新されるインスタンスの ID を validate メソッドに渡します。
バリデーターでパラメーターを使用して、以下を区別します。作成と更新:
検証ルールに、操作が更新であるか作成であるかを示すパラメーターを追加します。
更新のルール:
一意のルールで現在の ID を無視するように強制します:
'email' => 'unique:users,email_address,' . $userId,
作成ルール:
通常どおりに続行します。固有のルール:
'email' => 'unique:users,email_address',
これらの変更を組み込むことで、既存のレコードの更新を妨げることなく固有の検証ルールを適用できます。
以上が## Laravel で独自の検証ルールを使用してモデルをエラーなく更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。