3

1回のトランザクションでいくつかのcmsページを保存し、他のページを削除する必要があります。

だから、私はこれを作る方法:

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

単一のトランザクション?参考までに、$page1と$page2はどちらもMage:: getModel('cms / page')から取得されます。また、トランザクションで2つの保存を行う方法を教えてくれる優れた答えをここで見つけましたが、保存と削除の両方を行う方法は教えてくれません。どのようにそれを行うことができますか?

4

1 に答える 1

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()[リンク]から):

/**
 * Save object data
 *
 * @return Mage_Core_Model_Abstract
 */
public function save()
{
    /**
     * Direct deleted items to delete method
     */
    if ($this->isDeleted()) {
        return $this->delete();
    }
    // ...
}
于 2012-11-20T19:12:10.250 に答える