私はどのように徹底的なガイドを見つけることができないようですLaravelのユニークなフィールドを検証するため。以下のバリデーションルールの違いと、どれが間違っているか、または重複しているかについて詳しく説明してください。
1
$rules = ["email" => "email|unique:users"]
2
$rules = ["email" => "email|unique:users,email"]
3
$rules = ["email" => "email|unique:users,email,{$user->email}"]
4
$rules = ["email" => "email|unique:users,email,{$user->email},email"]
回答:
回答№1の場合は3最初のものは単にユーザーを見ているだけです電子メールが一意であることを確認するための表。 2番目の引数として列を指定しなかったので、列名はキーと同じであると仮定します。 email
.
2番目のものは単にemailカラムのためにどのカラムをチェックすべきかを宣言することです。この場合、emailカラムが email
これはすでにLaravelが仮定しています。データベース内のあなたのemailカラムが以下のような名前だった場合 user_email
それから、あなたは「パスしなければなりません」 user_email
バリデーターに対して、どの列をEメールアドレスでチェックするかを知っているように
3番目のもの、あなたはのIDを渡すべきですそのEメールを持っているユーザー。これは、その電子メールがそのIDに設定されていない限り、その電子メールは一意であるべきであることをLaravelに伝えます。これは編集フォームに役立ちます。メールを持っているユーザーを編集している場合 test@test.com
そしてあなたはそれを保存しようとします test@test.com
テーブル内(編集しようとしているもの)。このようにして、あなたはそのユーザのIDを渡し、検証は成功するでしょう。
4つ目は、名前を宣言しているだけですプライマリID列の。ほとんどの場合、Laravelは主キー列がidと呼ばれると想定しているため、これは必須ではありません。何らかの理由でusersテーブルの主キーが user_id
それから、あなたは渡します user_id
そのため、どの列のIDと一致するかがわかります。