【问题标题】:Phalcon: Polymorphic AssociationPhalcon:多态关联
【发布时间】:2015-01-10 01:51:05
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: php mysql polymorphic-associations phalcon


    【解决方案1】:

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

    也就是说,如果我没记错的话,你想要一个有价值的模型,它可以引用一种或另一种模型,对吧?!

    理论上是可以的,所以请随意尝试一下,如果成功了告诉我...

    嗯,正如我之前所说,使用 Phalcon 有很多方法可以实现这一点,我现在可以想象的一种方法如下:

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

    AssocModel 没有真正的表,但重写了 getSource 方法并根据 'assoc_type' 返回相应的表名。

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

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

    不确定这是否有很大帮助,但请与我分享这方面的任何进展,以便我们在这方面更进一步......

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-22
        • 1970-01-01
        • 2013-02-28
        相关资源
        最近更新 更多