@apptester

Как прописать правила валидации для данных не в ActiveRecord моделях?

Есть MySQL таблица, в которой хранятся записи о товарах (несколько миллионов).
Пользователь может создавать / удалять / обновлять / просматривать товары в админке. Для этого есть ActiveRecord модель Product, в которой прописаны правила валидации.
Появилась задача: заливать (создание + обновление) данные о товарах в файлах формата csv, excel (товаров в одном файле от тысячи до сотен тысяч). Под эти форматы были написаны классы адаптеры, которые читают файлы "кусочками" (например по 1000 записей) для того, чтобы избежать скачков потребления памяти. Для создания и обновления записей в таблице товаров написан класс Importer, который использует адаптеры для получения данных порциями и отправляет их в базу (используется ON DUPLICATE KEY UPDATE).
И вот при написании класса Importer возник вопрос: как валидировать данные приходящие от адаптера? Дублировать логику валидации из модели Product или может есть более красивое решение? Правил достаточно много и каждый раз внося изменения в правила для Product (в случае дублирования), придется не забывать менять в Importer. Подскажите, пожалуйста.
  • Вопрос задан
  • 328 просмотров
Решения вопроса 1
padavan
@padavan
Посмотрите на www.yiiframework.com/doc-2.0/yii-base-dynamicmodel.html
Правила валидации можно выдернуть один раз из существующей модели.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы