【发布时间】:2015-01-10 01:51:05
【问题描述】:
Phalcon 是否有一种内置方式来管理多态关联 - 通过行为或本地 - 除了手动处理它们?
谢谢!
【问题讨论】:
标签: php mysql polymorphic-associations phalcon
Phalcon 是否有一种内置方式来管理多态关联 - 通过行为或本地 - 除了手动处理它们?
谢谢!
【问题讨论】:
标签: php mysql polymorphic-associations phalcon
多态关联通常被误解,因为有很多方法可以使用这种反模式。
也就是说,如果我没记错的话,你想要一个有价值的模型,它可以引用一种或另一种模型,对吧?!
理论上是可以的,所以请随意尝试一下,如果成功了告诉我...
嗯,正如我之前所说,使用 Phalcon 有很多方法可以实现这一点,我现在可以想象的一种方法如下:
MainModel 当然应该有两列(即'assoc_id'、'assoc_type')。然后在 Phalcon 中建立一个与特殊模型的关系,在本例中称为 AssocModel。
AssocModel 没有真正的表,但重写了 getSource 方法并根据 'assoc_type' 返回相应的表名。
如果这些关联模型共享一组公共列,您可以创建一个接口IAssociable 或其他东西,这样您就可以保持关联模型的定义一致。
但是,如果您确实需要实际模型从这种关联中获取一些专有数据,那么不幸的是,将需要第二个模型实例来获取剩余的列/属性。为此,就像getSource 返回正确的表名一样,您可以创建另一个方法来实例化具有相应 ID 的正确模型类。
不确定这是否有很大帮助,但请与我分享这方面的任何进展,以便我们在这方面更进一步......
【讨论】:
您可以使用我的库来执行此操作。不过要小心。这个库正在开发中,一旦我在一个真实的项目中测试它就会发布稳定版本:https://github.com/IVIR3zaM/PhalconModelMiddleware
【讨论】: