¿Cómo “reiniciar” el registro activo de CodeIgniter para consultas consecutivas?

Estoy usando CodeIgniter y tengo un caso en el que dos tablas (proyectos y tareas) deben actualizarse con un valor justo después del otro (la columna activa debe establecerse en “n”). El código que estoy usando es:

function update($url, $id) { $this->db->where('url', $url); $this->db->update('projects', array('active' => 'n')); $this->db->where('eventid', $id); $this->db->update('tasks', array('active' => 'n')); } 

Con este código, la tabla de proyectos se actualiza pero la tabla de tareas no. Si hago un comentario $ this-> db-> update (‘projects’, array (‘active’ => ‘n’)); luego la tabla de tareas se actualiza.

Creo que esto tiene algo que ver con el almacenamiento en caché, pero probé flush_cache antes de las tareas db-> update call, pero eso no tuvo ningún efecto.

¿Alguien puede explicar cómo se pueden ejecutar consultas de actualización consecutivas usando CodeIgniter?

Utilizar

 $this->db->start_cache(); 

Antes de comenzar a construir consultas y

 $this->db->stop_cache(); 

Después de finalizar la creación de consultas. Además, usa

 $this->db->flush_cache(); 

Después de detener el caché.

Esto funciona:

 $this->db->flush_cache(); 

Si no realiza un get () o un CI similar, no siempre borra el caché. El código final se ve así:

 $this->db->from('table'); $this->db->where('field', $field); $count = $this->db->count_all_results(); $this->db->flush_cache(); 

Intenta llamar $this->db->reset(); después de la primera llamada de update .

EDIT: meh, prueba $this->db->_reset_write(); para eliminar todos los rastros de la consulta.

Para la versión 3 de Codeigniter, la forma correcta es:

$db->reset_query()

Como se encuentra aquí: http://www.codeigniter.com/userguide3/database/query_builder.html#resetting-query-builder

En la segunda llamada de actualización, ¿necesita el url condicional? de ser así, después de llamar a la primera actualización, los datos ya no estarán disponibles para el segundo. Tendrá que establecer nuevamente:

 function update($url, $id) { $this->db->where('url', $url); $this->db->update('projects', array('active' => 'n')); $this->db->where('url', $url); $this->db->where('eventid', $id); $this->db->update('tasks', array('active' => 'n')); } // Alternatively function update($url, $id) { $where_bit = array( 'url' => $url, ); $this->db->update('projects', array('active' => 'n'), $where_bit); $where_bit['event_id'] = $id; $this->db->update('tasks', array('active' => 'n'), $where_bit); } 

La actualización del registro activo de CI admite la condición donde se pasará como una matriz de clave => valor como el 3er parámetro (también como una cadena pero el id. Recomienda utilizar la matriz en su lugar)

tratar

 $this->db->reconnect(); 

después de tu consulta.

¡Buen día!