2011-09-02 8 views
7

EN Magento ¿Cómo puedo insertar datos en varias tablas en una sola transacción y deshacer si hay algún error en el proceso.? Puedo escribir consultas personalizadas y usar transacciones, pero preferiría si puedo hacerlo utilizando los métodos de Magento.Transacción de base de datos de Magento

Respuesta

6

Puede probar Mage :: getModel ('core/resource_transaction'). La documentación para él tal como es here.

Pero probablemente sea más útil, aquí hay un example de usarlo para crear una factura de un pedido.

+0

Gracias, lo tengo. – sushantsahay

+2

El contenido del enlace de ejemplo no está relacionado con la respuesta – gSorry

27

La respuesta aceptada está bien si lo que está intentando hacer es guardar modelos. Esto te permitirá encadenar cualquier número junto con la reversión.

Sin embargo, si va a realizar otras acciones que podrían dar lugar retroceso o está restituyendo a sí mismos, entonces usted quiere usar algo más bajo nivel:

$connection = Mage::getSingleton('core/resource')->getConnection('core_write'); 
try { 
    $connection->beginTransaction(); 

    // Make saves and other actions that affect the database 

    $connection->commit(); 
} catch (Exception $e) { 
    $connection->rollback(); 
} 

también se puede obtener la conexión desde un modelo, pero puede que no haya uno disponible.

Cuestiones relacionadas