Archivo de la etiqueta: CakePHP

Transacciones en CakePHP

Suongamos que tenemos un código para crear varios registros, pero no sabemos exactamente si todos esos registros van a poder crearse, y queremos que haya un rollback si eso no es posible.

En realidad CakePHP ya viene con una opción para hacer rollback en caso de error al modificar múltiples rows, pero acá lo hice manualmente:


public function miMetodoTransaccional($fkIds, $field1, $field2) {
$dataSource = $this->getDataSource();
$dataSource->begin($this);
$allOk = true;

foreach($fkIds as $fkId) {
$this->create();
$allOk = true & $this->save(array("fk_id" => $fkId, "field1" => $field1, "field2" => $field2));
}

if ($allOk) {
$dataSource->commit($this);
return true;
} else {
$dataSource->rollback($this);
return false;
}
}

Anuncios

Flushear caché en CakePHP

Activar el debug en 2, hacer un request, volver el debug a 0.

En producción, ante la posibilidad de mostrar warnings si el código no es del todo limpio en este sentido, hay que eliminar los archivos dentro de app/tmp/cache.