2012-11-20 27 views
3

刪除我需要保存一些CMS頁面和刪除他人在單個事務。如何保存在同一個事務

那麼,怎樣才能讓我這個:

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

一個單一的交易?作爲參考,這兩個$第1頁和第二頁$來自法師:: getModel(「CMS /頁」)。另外,我發現一個很好的答案here,告訴我怎麼做兩個交易撲救,但不知道如何做到既保存和刪除。如何做呢?

+0

注意別人:只是想更加明顯([中質疑艾倫風暴的回答關於'核心/ resource_transaction'鏈接] http://stackoverflow.com/questions/4878634/magento-catching-exceptions-and -滾回數據庫事務) – benmarks

回答

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(); 
    } 
    // ... 
} 
+0

夢幻般的答案! +1 –

+1

神奇的框架和ORM! :-) – benmarks

相關問題