是否应该在Zend Framework中为查找表创建模型?

时间:2013-02-20 17:29:35

标签: php zend-framework

我的查找表很少,如下所示。根据我的理解,我们需要每个数据库表的模型,但这是否也适用于查找/映射表?创建模型时使用的最佳实践是什么?下面是我的查找表的示例...

Transaction     Customer     Transaction_Lookup       
id              Id           transection_id
date            name         customer_id
active          active

我创建了与Transaction和Customer表对应的模型,是否还需要为Transaction_Lookup创建相应的模型?

我也在使用Data Mapper模式,这意味着我还必须为每个模型创建一个Mapper类......

先谢谢你的帮助....

1 个答案:

答案 0 :(得分:1)

我要说的一点是不要将模型视为与表一一对应的模型。这在您的OOP设计中可能非常有限。也就是说,通常你的模型会与一张桌子对齐。查找表是一个明显的情况,这是真的。

至于需要每个查找表的具体模型......我会考虑编写一个通用模型,可以用于与'lookup'表对应的所有对象。然后,您可以使用该泛型类,或将其编写为抽象类并对其进行扩展并创建命名的具体类。那里所需的唯一代码量可能非常有限,利用您在父类中已有的代码。如果您想要查找特定于表的摘要,您可以抽象字段 key(id) value 友好名称是否有效? 并将表中的相应字段映射到这些通用属性。真的有很多方法可以解决这个问题,希望我能解释清楚。

我通常编写两种样式的映射器,一种是基本上是表行网关,如Zend_Db_Table,另一种是更自定义的,也许我使用存储过程或复杂的Zend_Db_selects连接多个表。使用表行网关样式映射器我通常只需要为映射器指定表名,适配器和映射对象即可使用。在自定义映射器上,我通常需要逐个编写更多的实现代码。

我喜欢这种使用Data Mapper的方法。既方便又强大。