1) Добавить кастомное правило валидации (Как это сделать есть в документации)
2) Получить разницу в годах между двумя датами через Carbon (В документации карбона)
3) Применить свое правило валидации
Я придерживаюсь правил:
1) Хранить в UTC
2) Передача данных Api и все что входит и выходит из компонента React(например) - ISO (2013-02-04T22:44:30.652Z)
Moment - toISOString()
Carbon - toIso8601ZuluString()
Зачем все эти 5к -10к, прошелся по файлу чанками по 1к (например), чанк перебрать через foreach и каждую запись в очередь. Там и времени и ресурсов для каждой записи предостаточно, мультипоточность и балансировка. А если база упадет или еще чего, все записи останутся в очереди и выполнятся как только смогут.
Middleware должен прерывать выполнение операции. Текущий код просто устанавливает значение в конфиге и продолжает свою работу. И еще не факт что ты его правильно применяешь к самому пакету но тут остается только гадать.