質問: Validator::make($request -> all(), [ 'pref' => 'required|integer|between:1,47', ]); ``` 今回、この47都道府県に加えて「海外、住所不明」の選択肢も必要になってしまいました。 既存サイトの改修なので、値はすでに以下のように決まっています。 ``` 沖縄県 海外 住所不明 ``` valueを48,49にすれば手っ取り早いのですがそれはできません。 `between:1,99`にすればバリデーションは通りますが、`value="66"`のような期待していない値を通してしまいます。 そこで、`between:1,47|(ただし98と99のみ許可)`みたいなことができるのかなと思い質問させて頂きました。 皆様何か良いアイデアはございますでしょうか。よろしくお願いいたします。
回答: valueをバリデートするのであれば四つ思いつきました。 1. DBに都道府県コードバリデーション用のテーブルを作り、`exists`ルールで存在チェック 2. `regex`ルールを用いて正規表現でふるいにかける 3. `between`ルールと`not_in`ルールを用いる(between:1,99とnot_in:48,49,50・・・,96,97) 4. `in`ルールを用いる(in:1,2,3・・・46,47,98,99) どれもあまり綺麗ではありませんが・・・