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