'How do I validate a nested array attribute based on another attribute in Laravel?
I am uploading data from excel then validating it. I want to validate the date of employment based on the date of birth in the same row. I am having to get the date of birth from the entire imported array for each row, which is impacting performance.
My validation code is as follows:
$validator = Validator::make($staff, [
'*.DateofBirth' => ["date"],
'*.DateofEmployment' => [
function ($attr, $value, $fail) use ($staff) {
$staff_info = $staff[(int)explode(".", $attr)[0]]; // Getting same row data here
if (isset(($staff_info)["DateofBirth"])) {
$dob_is_valid = strtotime(($staff_info)["DateofBirth"]);
$doe_is_valid = strtotime($value);
if ($dob_is_valid && $doe_is_valid) {
$date = Carbon::parse($value);
$dob = Carbon::parse($staff_info["DateofBirth"]);
if ($dob->addYears(18)->isAfter($date)) {
$fail('The :attribute must be at least 18 years after Date of Birth');
}
}
}
},
],
]);
Is there a better way of accessing the same row attributes information?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
