- カテゴリ: validation
- 掲載バージョン: Laravel 12
- 名前空間 / FQCN / コマンド:
min_digits - 関連: digits, max_digits, numeric, min
- 変更履歴: Laravel 9 で追加
要点(TL;DR)
- 数値の桁数が指定した最小値以上かを検証する
- 例:
'code' => 'min_digits:4' - numeric ルールが暗黙的に前提となる点に注意
概要
min_digits は、入力値が数値であり、その桁数が指定した数以上であることを検証するバリデーションルールです。
ID、確認コード、通し番号など「値そのものではなく桁数」を制約したい場面で使われます。
min や digits と違い、値の大小や固定桁ではなく「最小桁数」を条件にできるのが特徴です。
構文 / シグネチャ
'field' => 'min_digits:value'
| 引数 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
| value | int | はい | なし | 最小桁数 |
- 戻り値: なし(検証通過または失敗)
- 例外/副作用: なし
使用例
最小例
$request->validate([
'code' => 'required|min_digits:4',
]);
code が 4 桁以上の数値であれば通過します。
実務例
$request->validate([
'order_number' => [
'required',
'numeric',
'min_digits:6',
'max_digits:10',
],
]);
注文番号など、ある程度の桁数幅を持たせたいケースに向いています。
よくある落とし穴・注意
- 文字列は対象外
数字に見える文字列でも、numeric として解釈されない場合は失敗します。 - 先頭ゼロは桁数に含まれない
000123 は数値としては 123 になり、桁数は 3 と判定されます。 - min とは意味が違う
min は数値の大小、min_digits は桁数です。
代替・関連APIとの比較
- digits
固定桁数を求める場合はこちらを使う。 - max_digits
最大桁数を制限したい場合に併用する。 - min
値の最小値を制限したい場合に使う。
桁数に幅を持たせたい場合は min_digits + max_digits の組み合わせが適しています。
テスト例(Pest)
it('accepts numbers with minimum digits', function () {
$rules = ['code' => 'min_digits:4'];
expect(validator(['code' => 1234], $rules)->passes())->toBeTrue();
expect(validator(['code' => 123], $rules)->fails())->toBeTrue();
});
トラブルシュート(エラー別)
| 症状/エラー | 原因 | 対処 |
|---|---|---|
| 常に失敗する | 数値として扱われていない | numeric を追加する |
| 先頭ゼロが無視される | 数値化されている | 文字列として扱い digits を使用 |
参考リンク
- Laravel Validation — Numeric Rules
https://laravel.com/docs/validation#rule-min-digits

