php - 如何在同一事务中保存和删除

标签 php magento transactions

我需要在单个事务中保存一些 cms 页面并删除其他页面。

那么,我该怎么做:

$page1->save();
$page2->delete();

单笔交易?作为引用,$page1 和 $page2 均来自 Mage::getModel('cms/page')。另外,我找到了一个很好的答案 here这告诉我如何在一个事务中进行两次保存,但没有告诉我如何进行一次保存和删除。怎么做到的?

最佳答案

如果您必须在单个事务中执行此操作,只需对您希望删除的那些项目调用isDeleted(true):

//Build out previous items, then for each which should be deleted...
$page2->isDeleted(true);

$transaction = Mage::getModel('core/resource_transaction');
$transaction->addObject($page1)
$transaction->addObject($page2)
//$transaction->addObject(...) etc...
$transaction->save();

我想我应该添加一个解释(来自 Mage_Core_Model_Abstract::save() [link] ):

/**
 * Save object data
 *
 * @return Mage_Core_Model_Abstract
 */
public function save()
{
    /**
     * Direct deleted items to delete method
     */
    if ($this->isDeleted()) {
        return $this->delete();
    }
    // ...
}

关于php - 如何在同一事务中保存和删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13478840/

相关文章:

php - 如何按照数据库中定义的顺序将行分配给并发进程?

javascript - Cordova 游戏 - 试图让我的网站发布在线高分

php - Magento 管理员路由不起作用

php - Magento:忘记密码返回空白浏览器页面

elasticsearch - Titan 1.0 [Berkeley + ES]-ES索引的更新延迟

spring - 使用 Spring JDBC 在事务中插入新的父子记录时出错

php - UTF-8贯穿始终

php - Magento REST API/产品调用返回空 JSON 数组

php - MySQL ROLLBACK 并与 PHP 一起使用

PHPexcel获取最高工作表索引范围