category

category

laravel

2025.7.23

2025.9.7

46

【Laravel】コントローラのvalidateメソッド(バリデーション)での重複不可(ユニーク)チェック(更新時対応)

コントローラのvalidateメソッドの重複不可チェックで、更新時に自分自身との重複エラーが発生してしまった、、、

自分自身を除く重複チェックの書き方。

前提条件

テーブルのプライマリキーの名前は「id」。

validateメソッドのルールのパラメータはモデルに記述する。

モデル

public static function rules($id = null)
{
    return $array = [
        '重複チェック対象カラム名' => "required|unique:テーブル名,重複チェック対象カラム名,{$id},id"
    ];
}

※重複チェック対象カラムは、重複に加え必須入力のチェックもしている。

※コントローラから受け取ったidを配列にセットし返している。

コントローラ【新規作成時】

public function メソッド名(Request $request){
    $this->validate($request, モデルのクラス名::rules());
    $input = $request->all();
    モデルのクラス名::create($input);
    return redirect()->route('リダイレクト先の名前');
}

コントローラ【更新時】

public function メソッド名(Request $request){
    $this->validate($request, モデルのクラス名::rules($request->id));
    $example = モデルのクラス名::find($request->id);
    $example->update($request->all());
    return redirect()->route('リダイレクト先の名前');
}

※rules($request->id)の引数で、idをモデル側に渡している。

フォームリクエストを使用した重複チェックの方法はこちら↓

【Laravel】フォームリクエストを使用したカスタムバリデーションの重複不可(ユニーク)チェック

999

コメント

コメントを残す

ニックネームは公開されます

CAPTCHA


閉じる