如何在同一个交易中保存和删除

时间:2012-11-20 17:35:27

标签: php magento transactions

我需要在一次交易中保存一些cms页面并删除其他页面。

那么,我该如何做到这一点:

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

单笔交易?作为参考,$ page1和$ page2都来自Mage :: getModel('cms / page')。另外,我找到了一个很好的答案here,告诉我如何在事务中执行两次保存,而不是如何同时执行保存和删除。怎么办呢?

1 个答案:

答案 0 :(得分:10)

如果必须在一次交易中执行此操作,只需在您要删除的项目上调用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();
    }
    // ...
}