Php 如何使laravel自定义验证程序比较两个数组值?

Php 如何使laravel自定义验证程序比较两个数组值?,php,laravel,validation,Php,Laravel,Validation,我正在尝试使用扩展创建一个自定义验证器,它将是数组中对象的一部分。验证规则如下: $this->validate($request, [ '*.odds' => 'required', '*.outcome_id' => 'required|oddIs:*.odds' ]); 因此,规则将获取结果id的值,并将其赔率属性与输入中的赔率进行比较 Validator::extend('oddIs', function($attribute, $value, $pa

我正在尝试使用扩展创建一个自定义验证器,它将是数组中对象的一部分。验证规则如下:

$this->validate($request, [
    '*.odds' => 'required',
    '*.outcome_id' => 'required|oddIs:*.odds'
]);
因此,规则将获取结果id的值,并将其赔率属性与输入中的赔率进行比较

Validator::extend('oddIs', function($attribute, $value, $parameters, $validator) {
    $outcome = Outcome::find($value);

    return $outcome->odds == array_get($validator->getData(), $parameters[0]);
});
正如你们所看到的,我正试图让astrike能够正常工作。但是我找不到一种方法来解析属性名并生成一个具有相对索引的键

简言之,我正在寻找的解决方案是验证并比较两个字段,这两个字段将嵌套在数组中

仅供参考:验证数据将作为JSON提供

类似的问题可能适用于较旧版本的laravel:

在阅读了源代码之后,可以使用extendDependent()方法完成这项工作。主文档中没有对其进行记录。将验证扩展代码更改为以下将所有参数更改为相对键

Validator::extendDependent('oddIs', function($attribute, $value, $parameters, $validator) {
    $outcome = Outcome::find($value);

    return $outcome->odds == array_get($validator->getData(), $parameters[0]);
});