我在应用程序中有两种类型的配置文件,它们是两个不同的表。例如,个人资料在“person”表中,其 ID 以“p”开头,而企业资料在“business”表中,其 ID 以“b”开头。
我有一个“喜欢”表,可以在帖子和个人资料之间创建关系。但是,轮廓是条件关系;如果 profile_id 以 'b' 开头,则应为 Business 模型,如果不是,则应为 'Person' 模型。
我试图在模型的关系()方法中加入一个 if 语句。但是,在那个阶段,属性没有初始化,我得到一个错误。我尝试使用 afterFind() 和 afterConstruct() 来添加与模型元数据的关系(使用 CActiveRecordMetaData::addRelation())。当我在 afterFind 或 afterConstruct 中呼应关系的类型时,它们都是应有的。但是,由于某种原因,当我尝试遍历某些结果并访问关系时,它们都被标识为业务。当我在添加关系之后调用 CActiveRecord::refresh() 时,我收到一个错误,说达到了 100 个嵌套函数调用的限制。
如何实现这种条件关系?