2015-01-10 3 views

ответ

1

Полиморфные ассоциации обычно неправильно понимаются, потому что существует много способов использовать этот антипаттерн.

Сказанное, если я правильно понял, вы хотите модель, которая имеет ценность, которая может относиться к одной модели или другой, правильно ?!

Теоретически это возможно, так что не стесняйтесь, чтобы попробовать его и скажите мне, если вам это удастся ...

Ну, как я уже говорил, есть много способов для достижения этой цели с Phalcon и один, что я могу Представьте себе на данный момент следующее:

должно иметь два столбца, конечно (например, 'assoc_id', 'assoc_type'). Затем вы установили в Phalcon одно отношение к специальной модели, в этом примере называется AssocModel.

AssocModel не имеет реальной таблицы, но метод getSource переопределен и возвращает соответствующее имя таблицы на основе 'assoc_type'.

Если эти совместимые модели имеют общий набор столбцов, вы можете создать интерфейс IAssociable или что-то еще, чтобы вы могли согласовать определение своих совместимых моделей.

Однако, если вам действительно нужна фактическая модель для захвата некоторых эксклюзивных данных из этой ассоциации, к сожалению, для извлечения оставшихся столбцов/свойств потребуется второй экземпляр модели. Для этого точно так же, как getSource возвращает правильное имя таблицы, вы можете создать другой метод для создания экземпляра соответствующего класса модели с соответствующим идентификатором.

Не уверен, если это поможет много, но делиться со мной никакого прогресса по этому вопросу, так что я, мы можем идти дальше по этому ...

1

вы можете использовать мою библиотеку для этого. но будь осторожен. эта библиотека находится в разработке, и стабильный выпуск придет, как только я проверю его в реальном проекте: https://github.com/IVIR3zaM/PhalconModelMiddleware

Смежные вопросы