两个模型的一个视图:使用基础模型类使其更容易?

时间:2011-05-09 08:19:03

标签: php symfony1 propel

我有这种情况:

  • 管理酒店的网站。
  • 在项目过程中增加了另一种酒店模式,现在它们已经是两个了。
  • 现在老板希望酒店列表中包含两种酒店。

我在考虑以下可能的解决方案:

  1. 创建一个超类,其中包含在酒店列表中显示所需的公共属性,并相应地覆盖。
  2. 在视图中劈开我的路。它现在有一个循环,在途中产生HTML代码(显然)。如果这样做,将会有两个循环。
  3. 我在方法#1中看到的问题是:“Hotel1扩展了BaseHotel1”,“Hotel2扩展了BaseHotel2”。好吧,我会创建一个超类,然后是什么?

    方法#2的问题是:我仍然远离“专业”Symfony开发人员,我不确定有问题的视图是否可以访问多个模型方法。也许来自另一个模块的渲染部分会起作用吗?

    那么,我该怎么做?你认为我列出的问题很容易解决吗?你看到了另一种方法吗?

    如果有,请分享您的想法。谢谢!

2 个答案:

答案 0 :(得分:1)

我知道你已经标记了你的问题Propel,但是我会在这里使用Doctrine inheritance - 如果有一个Propel等价物 - 要么是'具体'还是'列聚合'(取决于如何你想存储你的数据)。从本质上讲,你最终会得到一个基础Hotel类,然后你将会有Hotel1Hotel2个类。

通过这种方式,您可以在酒店模型和表类中使用两种模型共有的方法,然后在Hotel1Hotel2类中使用特定于酒店的方法。

编辑:刚刚找到the Propel equivalent,但此链接适用于Propel 1.5。看起来Propel 1.3似乎只支持'简单'继承类型。

答案 1 :(得分:0)

Doctrine在这里提供了一个很好的解决方案。看看column aggreation inheritance。也许Propel提供类似的东西,但我不熟悉推进...