Есть ли встроенный способ с Phalcon для управления Полиморфными ассоциациями - посредством поведения или изначально - кроме ручного обращения с ними?Phalcon: Полиморфная ассоциация
Спасибо!
Есть ли встроенный способ с Phalcon для управления Полиморфными ассоциациями - посредством поведения или изначально - кроме ручного обращения с ними?Phalcon: Полиморфная ассоциация
Спасибо!
Полиморфные ассоциации обычно неправильно понимаются, потому что существует много способов использовать этот антипаттерн.
Сказанное, если я правильно понял, вы хотите модель, которая имеет ценность, которая может относиться к одной модели или другой, правильно ?!
Теоретически это возможно, так что не стесняйтесь, чтобы попробовать его и скажите мне, если вам это удастся ...
Ну, как я уже говорил, есть много способов для достижения этой цели с Phalcon и один, что я могу Представьте себе на данный момент следующее:
должно иметь два столбца, конечно (например, 'assoc_id', 'assoc_type'). Затем вы установили в Phalcon одно отношение к специальной модели, в этом примере называется AssocModel
.
AssocModel
не имеет реальной таблицы, но метод getSource
переопределен и возвращает соответствующее имя таблицы на основе 'assoc_type'.
Если эти совместимые модели имеют общий набор столбцов, вы можете создать интерфейс IAssociable
или что-то еще, чтобы вы могли согласовать определение своих совместимых моделей.
Однако, если вам действительно нужна фактическая модель для захвата некоторых эксклюзивных данных из этой ассоциации, к сожалению, для извлечения оставшихся столбцов/свойств потребуется второй экземпляр модели. Для этого точно так же, как getSource
возвращает правильное имя таблицы, вы можете создать другой метод для создания экземпляра соответствующего класса модели с соответствующим идентификатором.
Не уверен, если это поможет много, но делиться со мной никакого прогресса по этому вопросу, так что я, мы можем идти дальше по этому ...
вы можете использовать мою библиотеку для этого. но будь осторожен. эта библиотека находится в разработке, и стабильный выпуск придет, как только я проверю его в реальном проекте: https://github.com/IVIR3zaM/PhalconModelMiddleware