ZF2项目的Zend \ Db的模式 - 无主义,使用本机的Zend \ Db的:具有以下结构:与儿童模式
Controller
ProductController
Model
Product
ProductTable
ProductType
ProductTypeTable
产品是模型,具有对应于“产品”表中的字段变量。
的productTable是连接到经由tableGateway数据库表类。的productTable具有的getItem()方法由“ID”来检索请求的产品。
ProductType是模型,具有对应像ID,名称,描述变量到“产品” pes“表字段。
ProductTypeTable就像ProductTable一样是表类。
每个产品属于某个ProductType
products.productTypeId = productTypes.id
是的关系。
在ProductTable-> getItem()方法中,我可以简单地获取productTypeId。 我可以使用连接来获取productTypes.name,productTypes.description或“productTypes”表中的任何字段。 但我不想这样做 - 而是处理产品实体中的新变量,如productTypeName,productTypeDesc, 我想要Product->getProductType()
并将其设置为ProductType对象,因此我可以获得Product->getProductType() ->getName()
以获得产品类型名称。
只是我想分配一个子模型作为父模型的变量。
我能做到这一点在控制器象下面这样:
$product = $this->getProductTable()->getItem(7); // id = 7
$product->setProductType($this->getProductTypeTable()
->getItem($product->getProductTypeId());
,但我想,使其在产品表类的getItem发生()方法。所以我不必在每个控制器中考虑它,而且它是封装的。
这样做的正确方法是什么?
谢谢。
只要我可以按照你的详细描述,这是非常好的。这很棒,因为我知道必须有一种方法,但我对ZF2并不是100%熟悉的。我试图避免学说使用本地方法 - 学习。我目前无法对其进行测试,但是我想感谢您为解释这一点做出的努力。当我周末回到电脑时,我会给出结果。 – smozgur
我做了一些关于DataMapper的研究,我可以看到这是我需要的,我必须学习的东西。然而,我太过专注于TableGateway--意味着到目前为止只熟悉ZF2中的TableGateway模式,而且如果没有适当的文档,我就很难开始工作,而且我没有发现任何关于DataMapper的内容,而是另一大图片的一小部分帮助初学者。你可以参考一个教程或某个地方的一个良好的开端,我可以像传统的指南一样遵循?除此之外,我的理解是,DataMapper正是我的问题的答案。谢谢! – smozgur
我强烈推荐Martin Fowler的书[企业应用程序架构模式(PoEAA)](http://www.amazon.co.uk/Enterprise-Application-Architecture-Addison-Wesley-Signature/dp/0321127420)。尽管第一次在2002年发布,并且大多数示例都是Java,但它仍然提供了有关Web应用程序设计模式的非常相关和简明的细节(Data Mapper模式仅为众多示例之一)。 – AlexP