Phalcon:多态协会

时间:2015-01-10 01:51:06

标签: php mysql polymorphic-associations phalcon

Phalcon是否有内置方式来管理多态关联 - 通过行为或本机 - 除了手动处理它们之外?

谢谢!

2 个答案:

答案 0 :(得分:1)

多态关联通常被误解,因为有很多方法可以使用这种反模式。

那就是说,如果我做对了,你想要一个有价值的模型,可以指一种模型或其他模型,对吧?!

从理论上讲它是可能的,所以请随意尝试并告诉我你是否成功......

好吧,正如我之前所说的,Phalcon有很多方法可以达到这个目的,我现在想象的是:

MainModel当然应该有两列(即' assoc_id',' assoc_type')。然后在Phalcon中设置一个与特殊模型的关系,在此示例中称为AssocModel

AssocModel没有真正的表,但是方法getSource被覆盖,并根据' assoc_type'返回相应的表名。

如果这些可关联的模型共享一个共同的集合列,您可以创建一个接口IAssociable或其他东西,这样您就可以保持关联模型的定义一致。

但是,如果您确实需要实际模型从这种关联中获取一些独占数据,那么很遗憾,需要第二个模型实例来获取剩余的列/属性。为此,就像getSource返回正确的表名一样,您可以创建另一个方法来使用相应的ID实例化正确的模型类。

不确定这是否有用,但与我分享任何进展,以便我们可以进一步了解...

答案 1 :(得分:1)

您可以使用我的库来执行此操作。不过要小心。这个库正在开发中,一旦我在一个真实的项目中测试它就会出现稳定的版本:https://github.com/IVIR3zaM/PhalconModelMiddleware