php - tipos - transacciones en mariadb
Magento detecta excepciones y reduce las transacciones de bases de datos (1)
He visto lo siguiente en el código central, y parece que es justo lo que pediste.
$transactionSave = Mage::getModel(''core/resource_transaction'');
$transactionSave->addObject($model_one)
$transactionSave->addObject($model_two)
$transactionSave->save();
El objeto core/resource_transaction
permite agregar objetos Magento y realizar un guardado masivo de ellos. Pruébalo, y me encantaría saber cómo funciona, o no funciona, en los comentarios.
Estoy trabajando en un módulo de Magento y necesito saber si es posible revertir una serie de guardados de modelo. Básicamente, tengo cinco modelos más varios de mi módulo que necesito guardar uno después del otro:
admin/role
admin/user
core/website
core/store_group
core/store
mymodule/model1
mymodule/model2
Mi problema es que cada vez que alguno de estos modelos lanza una excepción, necesito ingresar a MySQL y borrar manualmente todas las filas que fueron guardadas. Esto es muy improductivo.
Estoy bastante seguro de que Magento no tiene un procedimiento de reversión al que pueda acceder en mi contexto. Por ejemplo, miré en Mage_Core_Model_Abstract
y en el método de guardar, los mecanismos de reversión están todos protegidos.
Entonces, mi pregunta es, ¿hay alguna mejor práctica para hacer transacciones de bases de datos en Magento que yo deba tener en cuenta?