Laravel

【Lravel8】uniqueデータのupdate保存が元のデータと重複して保存できない問題

Emailアドレスなど重複がないようなデータをupdateで保存すると

xxxxが存在しています

というエラーが出て、保存ができない

編集する前の元データとこれから保存するデータが同じものなので、バリデーションで「重複」とみなされて、弾かれてしまう。

そんな時はこのようにするとOK

public function m_update($id,Request $request){
        $attribute = request()->validate([
        'カラム名' => ['nullable','max:100','min:3',Rule::unique('テーブル名')->ignore($id)],//元データは無視するように
        ]);
        モデル名::where('id', $id)->update($attribute);
        return back()->with('success', '編集完了しました');
    }

このように、元のカラムのidを取り込み、そのidを無視するようにする。

このバリデーションを説明すると、

「nullでもええよ、でも何か入れるとすると3〜100文字までな。しかも重複しないユニークなデータで。まあ、現在のデータはそのままでOKやで(無視するわ)」

-Laravel

© 2024 青い空とコーヒーと