Laravelでユニークなメールのバリデーションを実装する方法


  1. バリデーションルールの作成: まず、app/Http/Requestsディレクトリに新しいリクエストクラスを作成します。例えば、UniqueEmailRequestという名前のクラスを作成しましょう。このクラスはIlluminate\Foundation\Http\FormRequestを継承する必要があります。
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UniqueEmailRequest extends FormRequest
{
    // バリデーションルールを定義する
    public function rules()
    {
        return [
            'email' => 'required|email|unique:users,email',
        ];
    }
}

上記の例では、emailフィールドが必須で、メールアドレスの形式であること、そしてusersテーブルのemailカラムと一意であることをバリデーションしています。

  1. コントローラーでバリデーションを使用する: 次に、バリデーションを使用するコントローラーメソッドを作成します。例えば、UserControllerという名前のコントローラーを作成しましょう。
namespace App\Http\Controllers;
use App\Http\Requests\UniqueEmailRequest;
class UserController extends Controller
{
    public function store(UniqueEmailRequest $request)
    {
        // バリデーションを通過した場合の処理
    }
}

上記の例では、storeメソッドにUniqueEmailRequestを引数として渡しています。Laravelは自動的にリクエストをバリデーションし、バリデーションに失敗した場合はエラーレスポンスを返します。

これで、リクエストのバリデーションが完了しました。もしバリデーションに失敗した場合、Laravelはエラーメッセージをセッションに保存し、バリデーションエラーが発生したページにリダイレクトします。

以上がLaravelでユニークなメールのバリデーションを実装する方法です。これにより、重複するメールアドレスを持つユーザーの登録を防ぐことができます。