Laravelバリデーション - 自身を除く一意のメールアドレスの検証方法


  1. バリデーションルールの定義: まず、バリデーションルールを定義します。uniqueルールを使用し、除外条件を追加します。具体的には、usersテーブルのemailカラムを検証し、現在のユーザーのidを除外します。
use Illuminate\Validation\Rule;
$rules = [
    'email' => [
        'required',
        'email',
        Rule::unique('users')->ignore($user->id),
    ],
];

上記の例では、$userは現在のユーザーオブジェクトを表しています。

  1. バリデーションの実行: 次に、バリデーションを実行します。例えば、コントローラーのstoreメソッド内で以下のようにバリデーションを行います。
public function store(Request $request)
{
    $user = Auth::user(); // 現在のユーザーオブジェクトを取得
    $validatedData = $request->validate($rules);
    // バリデーションを通過した場合の処理...
    return redirect()->back()->with('success', '保存しました。');
}

上記の例では、$rulesには先ほど定義したバリデーションルールが含まれています。

これで、自身を除く一意のメールアドレスのバリデーションが実装されました。現在のユーザーのメールアドレスは一意である必要があり、他のユーザーと重複しないように確認されます。