こんにちは。YOSHITAKA(@YOSHITA19704216)です。
- numericとmaxを使ったエラーの謎が解決します。
Contents
Laravelの「numeric」と「max」バリデーションのエラー解決方法
解決方法
‘number’ => ‘numeric | max:5’
‘number’ => ‘numeric | max:99999’に変更
エラーの原因
以下のようにバリデーションをかけていたんですが、エラーが出てしまう状況でした。
- ‘○○’ => ‘max:5’ は エラーが出ない
- ‘○○’ => ‘numeric | max:5’ だと エラーが出る。
実際に単体テストを行った結果、5桁未満の数字を入れてもエラーが起こる。
考え方(数量と文字長)
数量と文字長の違いを理解しておく必要があった。
- 数量5までのバリデーション ⇒簡単すると、1~5の数字
- 文字長5文字のバリデーション ⇒簡単にすると、字数 (5桁までOK)
組み合わせによって変化するようです。
詳しい話が公式ドキュメントに載っているようなので、知りたい方は参照してください。
Laravelが定義するnumericRuleを持っていることが関係しているようです。
/**
* The numeric related validation rules.
*
* @var array
*/
protected $numericRules = [‘Numeric’, ‘Integer’];
numeric か integer かを一緒に定義してあげれば数量として、勝手に判断してくれる。
ない場合は、文字長で処理してくれるようです。
まとめ
今回はバリデーションで1時間以上悩んだ内容の解決方法についてお伝えしました。
※プログラミングは習得中ですので、参考程度に記事を読んでください。