0 より大きい必要がある (0.01 が有効) 価格フィールドを検証する必要があるため、次の検証を行います。
$request->validate([
'product_price' => 'required|numeric|gt:0',
]);
問題は、「product_price」フィールドに文字列を入力するとエラーが発生することです。
InvalidArgumentException 比較する値は同じ型である必要があります
なぜでしょうか?つまり、0より大きいかどうかを確認する前に、数値である必要があるかどうかを確認しているのです
ベストアンサー1
gt
、、gte
およびlt
はlte
Laravel 5.6 以降のバージョンで追加されたため、これがエラーが発生する原因であると思われます。(ただし、私の環境では動作しています。)
こうやってみてもいいと思う
$request->validate([
'product_price' => 'required|numeric|min:0|not_in:0',
]);
min:0
最小値が 0 であり、負の値が許容されないことを確認してください。not_in:0
値が 0 にならないことを確認してください。したがって、これら 2 つのルールを組み合わせると、目的が達成されます。
特定のルールに対して意味のあるエラー メッセージを定義できます。(正規表現を使用しても同じ結果を得ることができます。)