Validation Laravel验证gte规则

Validation Laravel验证gte规则,validation,laravel-validation,laravel-5.8,Validation,Laravel Validation,Laravel 5.8,我正在开发一个web应用程序,我需要验证一个表单。表单有两个数字字段,我需要确保其中一个大于或等于另一个 所以我用了这些规则 [ 'adults' => ['required', 'numeric'], 'people' => ['required', 'numeric', 'gte:adults'], ] 除一例外,其他一切都正常。假设成人缺失或空但人不存在。然后我希望成人是必需的信息。但是我得到了 InvalidArgumentException: The

我正在开发一个web应用程序,我需要验证一个表单。表单有两个数字字段,我需要确保其中一个大于或等于另一个

所以我用了这些规则

[
     'adults' => ['required', 'numeric'],
     'people' => ['required', 'numeric', 'gte:adults'],
]
除一例外,其他一切都正常。假设
成人
缺失或
不存在。然后我希望
成人是必需的
信息。但是我得到了

InvalidArgumentException: The values under comparison must be of the same type.

所以,似乎
gte
规则正在比较两个字段的类型,即使其中一个字段是
null
required
规则。我该如何解决这个问题?

我认为这是规则评估顺序的问题

如果首先评估
成人
,它将失败,因为
成人是必需的
错误。但是,如果首先对人进行评估,它会尝试将其与成年人进行比较,并抛出错误。您可以通过有条件地添加最后一条规则来解决此问题:

[
     'adults' => ['required', 'numeric'],
     'people' => ['required', 'numeric', $request->has('adults') ? 'gte:adults' : ''],
]

验证错误是什么?请求主体看起来是什么样子?我更新了我的问题,以包括在特定情况下遇到的错误。