Orm 如何在实际应用程序中使用ZF2博客教程中的模型结构?
我目前正在开发一个ZF2应用程序,并希望实现它与。可能在未来,DAL将被条令所取代,但在第一个版本中,该模型应该像博客应用程序中一样工作:Orm 如何在实际应用程序中使用ZF2博客教程中的模型结构?,orm,model,zend-framework2,data-access-layer,datamapper,Orm,Model,Zend Framework2,Data Access Layer,Datamapper,我目前正在开发一个ZF2应用程序,并希望实现它与。可能在未来,DAL将被条令所取代,但在第一个版本中,该模型应该像博客应用程序中一样工作:Service+Mapper+Data Objects 在Blog应用程序中,方法ZendDbSqlMapper#save(…)获取一个数据对象作为参数(就像Mapper的所有其他公共方法一样),提取它,然后将数据写入数据库。但我的现实情况有点复杂,我不(但想)理解,这种方法是否仍然适用于它,以及如何适用于它 应用程序应主要处理(保存和检索)某些技术服务的请求
Service+Mapper+Data Objects
在Blog应用程序中,方法ZendDbSqlMapper#save(…)
获取一个数据对象作为参数(就像Mapper
的所有其他公共方法一样),提取它,然后将数据写入数据库。但我的现实情况有点复杂,我不(但想)理解,这种方法是否仍然适用于它,以及如何适用于它
应用程序应主要处理(保存和检索)某些技术服务的请求/订单。(在下一步中,它们由员工手动处理并实施。)因此,常见情况是保存(更新/创建)订单
物理模型如下所示:
如您所见,订单
有一些依赖项,它们也有依赖项等。在创建订单
时,我必须首先创建一个逻辑连接
。对于逻辑连接
需要一个(抽象)物理连接
和一个具体的物理连接变体,如PhysicalConnectionX
。(它实现了。)此外,逻辑连接
需要一个新的客户
(简化:每次新订单都需要一个新客户)和一个带有具体端点变量的端点
(也是一个CTI实现)。数据模型左侧的表只是基本数据,应该/不能更改。(当然,更新更为复杂,因为我必须检查每个相关对象(如果已经存在),以避免为同一端点创建多个客户。)
我的第一个想法是这样实施:
- 转换输入,模型从表单中获取(我不使用
,因为我的for的结构与我的对象和数据库完全不同)李>Zend\Collection
- 为它的
对象水合(递归水合已经实现)李>顺序
- 为每种对象类型创建
李>映射器
- 让每个
Mapper#save(…)
- 在所依赖对象的映射器上调用
李>save(…)
- 然后只关心它的目标
- 在所依赖对象的映射器上调用
MyDataObjectA {
$id;
$myObjectB;
}
MyDataObjectB {
$id;
}
MapperA {
save($dataObjectA) {
saving $dataObjectA
calling MapperA#save($dataObjectA->getObjectB() )
}
}
MapperB {
save($dataObjectB) {
saving $dataObjectB
}
}
这是一个大量的代码和每一个案件都必须手动处理。(我也不确定,但可能我在依赖上下文的保存方面会遇到一些问题,因为这种方法不能简化上下文。)但是——我不相信,这是一个推荐的解决方案
嗯,这可能有点恐怖分子的味道。但是ZF2博客教程中的模型结构是什么?这是否适用于这种情况?或者它只对非常简单的结构有用,而对真实世界的应用程序几乎没有用处?(然后我会问——我们真的需要本教程吗,如果它展示了一种几乎永远无法在实际应用中使用的方法的话?)或者也许我只是理解了一些错误,有一种更好的(高效、优雅等)方法