Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/04/2011, 13:46
Avatar de juanca2626
juanca2626
 
Fecha de Ingreso: junio-2004
Ubicación: Lima-Peru
Mensajes: 67
Antigüedad: 20 años, 5 meses
Puntos: 0
Duda Transacciones en zend

Hola buenos dias. tengo unos meses en zend framework y aun me falta entender bien a zend.

aqui mi pregunta. tengo creado 3 archivos Zend_Db_Table_Abstract claro las 3 son tablas distintas, las 3 tablas son de tipo InnoDB. y tengo un proceso en la cual uso los 3 archivos para actualizar cada tabla con diferentes valores. lo que quiero haces es poder usar transacciones para que si falle en un proceso pues no guarde nada.


seria algo asi .

beginTransaction();

try {
instancio Db_Table 1 y ejecuto insert() .
instancion Db_Table 2 y ejecuto update().
instancion Db_Table 3 y ejecuto insert().
commit()
}catch(Exception $e) {
rollBack();
echo $e->getMessage();
}

segun los ejemplos que e visto uno en esta misma pagina

public function addLibro($titulo, $autor)
{
$this->getAdapter()->beginTransaction();
try {
$data = array('titulo' => $titulo, 'autor' => $autor);
$this->insert($data);
$this->getAdapter()->commit()
}catch(Exception $e) {
$this->getAdapter()->rollBack();
echo $e->getMessage();
}
}

el Db_Table, tiene getAdapte y ahi podrias acceder a beginTransaction, pero veo que esto lo hace en la misma clase. en este caso lo quiero hacer afuera ya que para la tranccion necesitaria el objeto DB , ¿como podria quedar mis lineas de codigo para que pueda hacer esto ?. toy buscando por todos lados la ayuda y no logro entender como hacerlo.


e intentado hacer esto, disculpen si es una estupides pero aun no tengo experiencia con zend :(

$table = new Application_Model_DbTable_Primero();
$db = $table->getAdapter(); // supongo que aqui obtengo el objeto DB y con esto seria suficiente para poder trabajar las transacciones con mis demas objetos o estoy equivocado ??
$db->beginTransacction(); // aqui iniciaria mi transaccion y ya tendria mis
$db->commit() y $db->rollBack();

pero cuando ejecuto esto mi tira un error.

Fatal error: Call to undefined method Zend_Db_Adapter_Pdo_Mysql::beginTransacction() in C:\xampp\htdocs\server-hasso\application\controllers\PrimeroController.ph p on line 44

les agradecere cualquier ayuda