Как я могу иметь условные отношения в модели?
У меня есть два типа профилей в приложении, и это две разные таблицы. Например, личные профили находятся в таблице "персона", а их идентификаторы начинаются с "p", а бизнес-профили находятся в таблице "бизнес", а их идентификаторы начинаются с "b".
У меня есть таблица "как", которая создает связь между постом и профилем. Тем не менее, профиль является условным отношением; если profile_id начинается с 'b', это должно быть с бизнес-моделью, а если нет, то с моделью 'Person'.
Я попытался вставить оператор if в методе lation() модели. Однако на этом этапе свойства не инициализируются, и я получаю сообщение об ошибке. Я пытался использовать afterFind() и afterConstruct(), чтобы добавить отношение к метаданным модели (используя CActiveRecordMetaData::addRelation()). Когда я повторяю тип отношений в afterFind или afterConstruct, они все, что они должны быть. Однако по какой-то причине, когда я пытаюсь просмотреть некоторые результаты и получить доступ к связи, все они определяются как предприятия. Когда я вызываю CActiveRecord::refresh() точно после того, как добавляю отношения, я получаю ошибку, сообщающую, что достигнут предел в 100 вызовов вложенных функций.
Как я могу реализовать эти условные отношения?