laravelのvalidateで、入力した時だけチェックして欲しい時の書き方(‘email’=> [‘sometimes’, ‘nullable’, ‘email’])
‘sometimes’だけ指定すればいいのかな?と思っていたら、
‘nullable’も指定しないとダメだった!
1 2 3 4 5 6 7 8 9 10 |
protected function validator(array $data) { $rule = [ 'name' => ['required', 'string', 'max:255'], 'password' => ['required', 'string'], // emailは必須じゃない。何か入力された時だけ、email形式かチェックする 'email'=> ['sometimes', 'nullable', 'email'], ]; return Validator::make($data, $rule); } |
更新時などに、既存のemailと被ったりしないかチェック。
unique:テーブル名,カラム名,例外ID
なんだけど、カラム名の前のカンマとの間に半角スペースが1個でもあると
半角スペース+カラム名で探しに行って、そんなカラム名無いよ!と怒られるので注意!
trimくらいしといてよ~。
1 |
'email' => ["unique:users,email,$id"], |