コントローラの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をモデル側に渡している。
フォームリクエストを使用した重複チェックの方法はこちら↓



コメントを残す