Коллеги, я вот тут хочу странного-извращённого, но пока не могу придумать, как менее криво.
Пользую в одном проекте расширение yii2-attachments. Оно даёт возможность к AR-моделям через Behavior цеплять файлы и потом обращаться как $model->files.
В некоторых кейсах меня это устраивает, типа там цеплять файлы к новостям.
Проблема в том, что этот набор прицепленных файлов суть тупой массив без какой-то типизации. А тут появилась нужда цеплять некие именно типизированные вложения, примерно 5-6 видов и обращаться именно к ним.
Если проводить аналогию с интернет-магазином - то, допустим, это "скан чека", "скан счёт-фактуры" и так далее. То есть - совершенно определённые поля; возможно - отдельные методы моделей, что-нибудь из серии "отправить счёт-фактуру клиенту по почте".
Не хочется заводить под это отдельное хранилище, хочется использовать уже работающий модуль.
Соответственно, пока вижу 2 варианта:
1. Сделать промежуточные модели типа "чек", "счёт-фактура", к ним свои таблицы, и файлы потом связывать уже с этими моделями.
2. Дополнить расширение по методу "несколько классов в одной таблице", добавив к таблице attachments поле class, и получить возможность в таблице attachments хранить не просто модели класса File, а любые унаследованные от этого класса, типа там InvoiceFile и так далее.