Magento 数据库事务

发布于 2024-12-02 16:00:38 字数 92 浏览 0 评论 0原文

在 Magento 中,如何在单个事务中将数据插入到多个表中,并在过程中出现任何错误时回滚。?我可以编写自定义查询并使用事务,但我更喜欢使用 Magento 方法来完成。

IN Magento How can I insert data in multiple tables in a single transaction and rollback if there is any error in the process.?? I can write custom queries and use transactions but I would prefer if I can do it using Magento methods.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

丑疤怪 2024-12-09 16:00:38

如果您尝试做的是模型保存,则接受的答案很好。这将使您可以将任何数字与回滚链接在一起。

但是,如果您正在执行可能触发回滚或自行回滚的其他操作,那么您需要使用更底层的操作:

$connection = Mage::getSingleton('core/resource')->getConnection('core_write');
try {
    $connection->beginTransaction();

    // Make saves and other actions that affect the database

    $connection->commit();
} catch (Exception $e) {
    $connection->rollback();
}

您还可以从模型获取连接,但可能没有可用的连接。

The accepted answer is fine if what you are attempting to do is model saves. This will let you chain any number together with rollback.

If, however, you are performing other actions that might trigger roll-back or are rolling back themselves, then you want to use something more low-level:

$connection = Mage::getSingleton('core/resource')->getConnection('core_write');
try {
    $connection->beginTransaction();

    // Make saves and other actions that affect the database

    $connection->commit();
} catch (Exception $e) {
    $connection->rollback();
}

You can also get the connection from a model, but there may not be one available.

梦情居士 2024-12-09 16:00:38

您可以尝试 Mage::getModel('core/resource_transaction')。相关文档位于此处

但可能更有用,这里有一个 示例 使用它从订单创建发票。

You can try Mage::getModel('core/resource_transaction'). The documentation for it such as it is here.

But probably more useful, here is an example of using it to create an invoice from an order.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文