laravel5.1で更新時Validateの注意点(unique制限から自分自身は除外する方法)
1 2 3 4 5 6 7 8 9 10 11 12 |
public function update(Request $request, $id) { // Validateルール(チェックする項目と内容)を指定 $rules = [ 'username' => ["unique:users"], // このままだと更新が全く出来ない! 'password' => ['between:4,32',], ]; // 問題があったら、元ページに戻る $this->validate($request, $rules); |
laravelの入力フォームチェックは、’input_name’ => [‘unique:users’]と指定するだけで、重複した値でないか簡単にチェックしてくれる便利機能。
ですが、更新時にも自分自身のレコードと比較して「もうあるよ~」と弾かれてしまうのが玉にキズ。
これを回避するためには、第三引数が除外対象なのでidを指定するだけです。(第二引数はカラム名)
この動作をデフォにして欲しいけど、今度はCreateの時に困りそう…。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public function update(Request $request, $id) { // Validateルール(チェックする項目と内容)を指定 $rules = [ // ダブルクォーテーションで囲って、$idを展開させる(シングルクォーテーションではダメ!) 'username' => ["unique:users,username,$id"], 'password' => ['between:4,32',], ]; // 問題があったら、元ページに戻る $this->validate($request, $rules); |