0

我创建了一个 crud 系统。在这里,我有一个主要模型,然后是依赖细节模型。因此它们是多行(有时 > 100 )输入到与父模型相关的详细信息模型中。通过网格(内联编辑)处理的所有操作。所以创建、更新、删除操作都是通过单个请求(通过数据库进行逻辑检查)来执行的。

现在我正在考虑将数据库事务用于整个操作。但是我很困惑,如何使用相同的结构来实现它。我已经建议将我的所有代码移动到一个模型中,因此可以在那里应用事务。但我在想,是否可以使用任何其他方法来保留主要和细节模型代码的分离。

4

3 回答 3

0

您是使用 AJAX 进行更改还是依赖手动表单提交?

您可以使用所谓的 UnitOfWork 模式。

保存用户对网格每一行所做的任何更改,但实际上并不将它们提交到数据库。然后,在页面上放置一个通用保存按钮,这将使您的服务器通过事务实际提交所有更改。

您可以保留用户更改的每一行的列表服务器端。您不需要跟踪所有行,因为如果它们没有更改任何内容,您就不需要保存任何内容。

于 2012-09-10T14:57:30.350 回答
0

你在你的模型中使用了什么样的方法?你的模型是否知道他们自己的持久性(你会做类似的事情$user->save()),还是你正在做更多的数据映射器方法($userManager->save($userEntity))?后者使事务处理更容易。

如果您正在执行活动记录类型的模式 ( $user->save()),那么最好的选择可能只是手动获取数据库连接并在控制器中管理事务。

如果你在做数据映射器的东西,你有更多的选择,包括做一个完整的工作单元实现。

于 2012-09-10T22:00:12.920 回答
0

至于我的最后一条评论,将代码移动到父模型是我现在的解决方案。所以我想我应该标记这个线程已回答。

于 2012-10-04T10:10:50.453 回答