sql >> Base de Datos >  >> RDS >> Mysql

Transacciones de Codeigniter

Uso de transactions significa bases de datos de apoyo para insertar datos de forma segura. Entonces, en Codeigniter escribimos todas las funciones relacionadas con la base de datos en el Modelo no en el controlador. . Y en su segundo código (que no funciona) tiene un modelo señalado allí. (utils ). Tan simple que estoy seguro de que esto no funcionará. Porque no es una inserción de datos con modelo y controlador paralelo. La transacción debe codificarse en el Modelo (Escribiré en Modelo en mi respuesta ).

Cargar este material también

  1. Biblioteca de base de datos
  2. Clase de modelo
  3. Ayudante de URL
  4. Sesión

Suposiciones

En tu código has usado $data y $test como matriz. Así que supongo que hay dos matrices para insertar y actualizar datos.

Tus conjuntos de datos

$data = array(
   'title' => 'My title' ,
   'name' => 'My Name' ,
   'date' => 'My date'
);

$id = 007;
$test = array(
   'title' => $title,
   'name' => $name,
   'date' => $date
);

Tu código

$this->db->trans_start(); # Starting Transaction
$this->db->trans_strict(FALSE); # See Note 01. If you wish can remove as well 

$this->db->insert('table_name', $data); # Inserting data

# Updating data
$this->db->where('id', $id);
$this->db->update('table_name', $test); 

$this->db->trans_complete(); # Completing transaction

/*Optional*/

if ($this->db->trans_status() === FALSE) {
    # Something went wrong.
    $this->db->trans_rollback();
    return FALSE;
} 
else {
    # Everything is Perfect. 
    # Committing data to the database.
    $this->db->trans_commit();
    return TRUE;
}

Notas

  1. De forma predeterminada, Codeigniter ejecuta todas las transacciones en modo estricto. Cuando el modo estricto está habilitado , si está ejecutando varios grupos de transacciones, si un grupo falla, todos los grupos se revertirán. Si el modo estricto está deshabilitado , cada grupo es tratado de forma independiente , lo que significa que el fracaso de un grupo no afectará a los demás .