Задать вопрос
@apptester

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

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

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

Похожие вопросы