Phalcon是否有内置的方式来管理多态关联 – 通过行为或本机 – 除了手动处理它们?
谢谢!
最佳答案 多态关联通常被误解,因为有很多方法可以使用这种反模式.
也就是说,如果我做对了,你想要一个有价值的模型,可以指某种模型或其他模型,对吧?!
从理论上讲它是可能的,所以请随意尝试并告诉我你是否成功……
好吧,正如我之前所说的,Phalcon有很多方法可以达到这个目的,我现在想象的是以下几点:
MainModel当然应该有两列(即’assoc_id’,’assoc_type’).然后在Phalcon中设置一个与特殊模型的关系,在这个例子中称为AssocModel.
AssocModel没有真正的表,但是方法getSource
被覆盖,并根据’assoc_type’返回相应的表名.
如果这些可关联模型共享一个公共集合o列,您可以创建一个接口IAssociable或其他东西,因此您可以保持您的可关联模型的定义一致.
但是,如果您确实需要实际模型从该类关联中获取一些独占数据,那么很遗憾,需要第二个模型实例来获取剩余的列/属性.为此,就像getSource返回正确的表名一样,您可以创建另一个方法来使用相应的ID实例化正确的模型类.
不确定这有多大帮助,但与我分享这方面的任何进展,所以我可以进一步研究这个……