tutorial ellislab php codeigniter

php - ellislab - ¿Cómo "restablecer" el registro activo de CodeIgniter para consultas consecutivas?



localhost/codeigniter (6)

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

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 pasa como una matriz de clave => valor como el tercer parámetro (también como una cadena, pero en el caso de id, se recomienda usar la matriz)

Estoy usando CodeIgniter y tengo un caso en el que dos tablas (proyectos y tareas) deben actualizarse con un valor justo después de la otra (la columna activa debe configurarse 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 se actualiza. Si comento $this->db->update(''projects'', array(''active'' => ''n'')); entonces la tabla de tareas se actualiza.

Reconozco que esto tiene algo que ver con el almacenamiento en caché, pero he intentado 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 utilizando CodeIgniter?


Esto funciona:

$this->db->flush_cache();

Si no realiza un get () o un CI similar, no siempre se 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();


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

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



Utilizar

$this->db->start_cache();

Antes de iniciar la construcción de consultas y

$this->db->stop_cache();

Después de terminar la construcción de consultas. Además, usar

$this->db->flush_cache();

Después de detener el caché.


tratar

$this->db->reconnect();

después de su consulta.

¡Buen día!