Phalcon是否有内置方式来管理多态关联 - 通过行为或本机 - 除了手动处理它们之外?
谢谢!
答案 0 :(得分:1)
多态关联通常被误解,因为有很多方法可以使用这种反模式。
那就是说,如果我做对了,你想要一个有价值的模型,可以指一种模型或其他模型,对吧?!
从理论上讲它是可能的,所以请随意尝试并告诉我你是否成功......
好吧,正如我之前所说的,Phalcon有很多方法可以达到这个目的,我现在想象的是:
MainModel
当然应该有两列(即' assoc_id',' assoc_type')。然后在Phalcon中设置一个与特殊模型的关系,在此示例中称为AssocModel
。
AssocModel
没有真正的表,但是方法getSource
被覆盖,并根据' assoc_type'返回相应的表名。
如果这些可关联的模型共享一个共同的集合列,您可以创建一个接口IAssociable
或其他东西,这样您就可以保持关联模型的定义一致。
但是,如果您确实需要实际模型从这种关联中获取一些独占数据,那么很遗憾,需要第二个模型实例来获取剩余的列/属性。为此,就像getSource
返回正确的表名一样,您可以创建另一个方法来使用相应的ID实例化正确的模型类。
不确定这是否有用,但与我分享任何进展,以便我们可以进一步了解...
答案 1 :(得分:1)
您可以使用我的库来执行此操作。不过要小心。这个库正在开发中,一旦我在一个真实的项目中测试它就会出现稳定的版本:https://github.com/IVIR3zaM/PhalconModelMiddleware