Я занимаюсь разработкой приложения, в котором необходимо будет импортировать данные для трех моделей из одного файла CSV (с ассоциациями «один ко многим»).Я настроил модель и контроллер Datafile для обработки загрузки / анализа файла.Прямо сейчас вся логика анализа и сохранения записей находится в контроллере.Это позволяет мне сохранять в нескольких разных моделях, получать идентификаторы для сохраненных записей и создавать ассоциации по мере необходимости во время анализа файла.
Подумав о принципе «толстая модель, тощий контроллер», я понялУ меня около 150 строк кода в контроллере, который на самом деле просто обрабатывает данные.Когда я начал смотреть на перемещение этого в модель, я пришел к выводу, что мне придется обрабатывать все эти данные в массивах (без знания идентификаторов ассоциации) и отправлять их обратно в контроллер для сохранения (так как модель не можетвызов методов из других моделей).Я ожидаю около 1500 записей в файле импорта.Я использую CakePHP, у которого есть метод saveAll()
для сохранения данных на нескольких моделях одновременно из одного массива.
Другой вариант - каждая из трех моделей отдельно анализирует файл, игнорируя любые данные.это не нужно.Это должно быть возможно, пока я отправляю его моделям в правильном порядке и даю моделям "ownTo" список возможных связанных записей для поиска.
Итак, есть ли какие-либо рекомендации по этим параметрам?
- Оставьте код синтаксического анализа в контроллере Datafile как есть.
- Переместите весь код синтаксического анализа в модель Datafile, затем передайте обратно большой массив для сохранения через контроллер Datafile.
- Отправьте файл отдельно для каждой из трех моделей вместе с дополнительными списками для определения ассоциаций.