Laravel: 0より大きい数値の検証が失敗する 質問する

Laravel: 0より大きい数値の検証が失敗する 質問する

0 より大きい必要がある (0.01 が有効) 価格フィールドを検証する必要があるため、次の検証を行います。

$request->validate([
            'product_price' => 'required|numeric|gt:0',
        ]);

問題は、「product_price」フィールドに文字列を入力するとエラーが発生することです。

InvalidArgumentException 比較する値は同じ型である必要があります

なぜでしょうか?つまり、0より大きいかどうかを確認する前に、数値である必要があるかどうかを確認しているのです

ベストアンサー1

gt、、gteおよびltlteLaravel 5.6 以降のバージョンで追加されたため、これがエラーが発生する原因であると思われます。(ただし、私の環境では動作しています。)

こうやってみてもいいと思う

$request->validate([
    'product_price' => 'required|numeric|min:0|not_in:0',
]);

min:0最小値が 0 であり、負の値が許容されないことを確認してください。not_in:0値が 0 にならないことを確認してください。したがって、これら 2 つのルールを組み合わせると、目的が達成されます。

特定のルールに対して意味のあるエラー メッセージを定義できます。(正規表現を使用しても同じ結果を得ることができます。)

おすすめ記事