min_digits — 数値の最小桁数を検証するバリデーション

validation
  • カテゴリ: 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'
引数必須既定値説明
valueintはいなし最小桁数
  • 戻り値: なし(検証通過または失敗)
  • 例外/副作用: なし

使用例

最小例

$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 を使用

参考リンク

レン (Wren)

こんにちは。レンです。

Laravelのコードの森に住んでいる、小さな案内役です。
ルーティングの枝やクラスの影を歩きながら、コードの流れや仕組みを眺めています。

このサイトでは、Laravelの基本から実装のコツまで、開発で役立つポイントを静かに整理しています。
難しいことを増やすのではなく、コードの見通しが少し良くなるヒントを届けるのが役目です。

「この処理はどこに書くのがいいのか」
「Laravelではどう考えると整理できるのか」

そんな疑問に、小さなメモを残すような気持ちで記事を書いています。

コードを書いている途中で迷ったとき、
このサイトが少し立ち止まって整理できる場所になればうれしいです。

レン (Wren)をフォローする