当涉及到多个(修改或删除插入)等操作时,由于magento入门的深度不够,经常会力不从心,即使想到事务管理,也不知道该如何下手,因此有时候需要自己写一下回滚的code,有的人直接不写回滚code直接给项目遗留下很多风险,以后维护起来会花费更多的成本。
这里简单的事例分享给大家来处理magento的事务。
事务操作:
public function TransactionOperationFn(){
$saveTransaction = Mage::getModel('core/resource_transaction');
$storemodel = Mage::getModel('core/store')->load(6);
$storemodel->setIsActive(1);
$groupmodel = Mage::getModel('core/store_group')->load(10);
$groupmodel->setIsActive(1);
$saveTransaction->addObject($groupmodel) ;
$saveTransaction->addObject($storemodel) ;
$saveTransaction->save();
}
传统操作:
public function plainOperationFn(){
$storemodel = Mage::getModel('core/store')->load(6);
$storemodel->setIsActive(1);
$storemodel->save();
$groupmodel = Mage::getModel('core/store_group')->load(10);
$groupmodel->setName('Test Code');
$groupmodel->save();
}
传统操作不能保证事务的原子性和一致性。