У меня есть одна таблица в базе данных (mysql). Но в этой таблице хранятся несколько несколько разных типов строк. Тип зависит от столбца таблицы type
. У меня есть абстрактный класс ActiveRecord для таблицы и несколько подклассов-потомков, реализующих немного другую логику для строк той же таблицы разных типов. Теперь я реализую действие контроллера обновлений для всех типов строк. Мне предоставляется идентификатор строки и нужно создать экземпляр ActiveRecord, представляющий строку с этим идентификатором. Но мне как-то нужно создавать экземпляры разных подклассов в зависимости от типа соответствующей строки.Полиморфно найти модель из базы данных в Yii2
Если бы мне предоставили как тип, так и идентификатор, я мог бы использовать фабрику для выбора соответствующего подкласса. Но у меня уже есть тип в базе данных, и идентификатор дает мне достаточно информации, чтобы выбрать его оттуда. Но если я сначала должен был выбрать тип из базы данных, а затем создать экземпляр соответствующего подкласса, который означал бы выполнение одного и того же запроса дважды.
Я хочу найти хороший способ получить данные из базы данных, а затем выбрать подходящий подкласс ActiveRecord, чтобы создать экземпляр для него, не делая чрезмерных запросов или требуя чрезмерных данных. Есть ли способ сделать это Yii2?
Или я должен как-то по-другому подойти к этой проблеме? Фактическая проблема состоит в том, что несколько почти одинаковых, но немного разных объектов, хранящихся в одной таблице с немного другой бизнес-логикой.
Таким образом, переопределение 'instantiate' позволяет мне выбирать из разных подклассов ActiveRecord в соответствии с данными, полученными из базы данных. Именно об этом я и спрашивал! Таким образом, мне не нужно будет предоставлять тип моему контроллеру при работе с уже существующей строкой. Большое спасибо! – Gherman