2011-02-02 23 views
10

Bir Magento modülü üzerinde çalışıyorum ve bir dizi model tasarrufu geri almanın mümkün olup olmadığını bilmem gerekiyor.Magento istisnaları yakalamak ve veritabanı işlemlerini geri almak

admin/role 
admin/user 
core/website 
core/store_group 
core/store 
mymodule/model1 
mymodule/model2 

Benim sorunum bu modellerin herhangi bir özel durum zaman, ben silmek elle MySQL gidip ihtiyaç vardır: Temel olarak, ben birbiri ardına kaydetmek gerekir benim modülünden birkaç artı beş modelleri var kaydedilen tüm satırlar. Bu çok verimsiz.

Magento'nun içeriğimde erişebildiğim bir geri alma yordamına sahip olmadığından eminim. Örneğin, Mage_Core_Model_Abstract'a baktım ve kaydetme yönteminde geri alma mekanizmalarının tümü korunur.

Yani, sorum şu ki, Magento'da bilmem gereken veritabanı işlemleri yapmak için en iyi uygulama var mı?

cevap

13

Temel kodda kullanılanları gördüm ve sipariş ettiğiniz gibi görünüyor.

$transactionSave = Mage::getModel('core/resource_transaction'); 
$transactionSave->addObject($model_one) 
$transactionSave->addObject($model_two) 
$transactionSave->save(); 

core/resource_transaction nesne Magento nesneleri ekleyin ve onlara bir kurtarış kitle gerçekleştirmesini sağlar. Bunu bir deneyin ve yorumlarda bunun sizin için nasıl çalıştığını veya çalışmadığını duymayı çok isterim.

+0

Bu tam olarak çalıştı. Teşekkürler. Modellere daha fazla veri eklemem gerekirse işlemi tekrar kaydedebileceğimi de öğrendim. Örneğin, mağaza modeli için website_id ve store_group_id değerini ayarlamalıyım. İlk işlem kaydettikten sonra, model birincil anahtarla güncellenir. Sonra tekrar kaydediyorum ve satırlar güncellendi. –

İlgili konular