Breathnote
Laravel:uniqueバリデーションで自分自身を対象外としたい

Laravel:uniqueバリデーションで自分自身を対象外としたい

参考記事とほぼ同じ内容ですが、すぐ見返せるようまとめておきます。

記法

userテーブルのemailカラムを更新します。

フォームリクエストを用いると以下になります。

Request.php
public function rules()
{
    return [
        'id' => 'required|string|max_len:20|exists:user,id',
        'email' => 'required|string|unique:user,email,' . $this->id . ',id',
    ];
}

単純なユニーク制約だと、更新前の自分自身を見つけてバリデーションエラーとなりますので、一緒に入力されたuserテーブルの主キー(ここではid)を用いて、除外対象を指定します。

所感

公式ドキュメントには、上記以外の記法も紹介されていますので、参考にしてください。