Laravelで一意のメールアドレスをバリデーションする方法


  1. ルールの作成: まず、バリデーションルールを作成する必要があります。Laravelでは、uniqueルールを使用してメールアドレスの一意性を検証します。以下は、rulesメソッド内でルールを定義する例です。
public function rules()
{
    return [
        'email' => 'required|email|unique:users,email',
    ];
}

上記の例では、emailフィールドが必須であり、有効なメールアドレス形式であることを確認します。さらに、usersテーブルのemailカラムとの一意性を検証します。

  1. エラーメッセージのカスタマイズ: もしバリデーションに失敗した場合、デフォルトのエラーメッセージが表示されます。エラーメッセージをカスタマイズするには、resources/langディレクトリ内にある言語ファイルを編集します。例えば、resources/lang/ja/validation.phpファイルを開いて、以下のように編集します。
'unique' => ':attributeは既に使用されています。',

このようにすることで、一意性のバリデーションに失敗した場合に表示されるエラーメッセージがカスタマイズされます。

  1. フォームでの使用: 作成したバリデーションルールをフォームで使用するには、FormRequestクラスを作成する必要があります。以下は、FormRequestクラスの例です。
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class MyFormRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }
    public function rules()
    {
        return [
            'email' => 'required|email|unique:users,email',
        ];
    }
}

フォームリクエストクラスを使用することで、コントローラで受信したリクエストをバリデーションすることができます。

以上が、Laravelで一意のメールアドレスをバリデーションする方法です。これにより、重複したメールアドレスをデータベースに保存することを防ぐことができます。