2010-09-05 30 views
8

Aquí es mi consulta, en la de CodeIgniter Active Record:CodeIgniter/PHP Registro Activo no aumentará un entero

function calculate_invites($userid) 
{ 
    $this->db->where('id', $userid) 
       ->update('users', array('invites' => 'invites-1', 'sentinvites' => 'sentinvites+1'), FALSE); 
} 

Los campos invites y sentinvites son ambos enteros, pero se ponen a 0 después de la función se ejecuta. Esto me hace suponer que CodeIgniter está pasando invites-1 y sentinvites+1 como cadenas, pero pensé que agregar FALSE al final lo detuvo haciendo eso?

Gracias!

Jack

+0

desde Ci- Active Record is't trabajando casi la manera que espera un AC para trabajar ... aquí la referencia ci-user-guide [active_record] (http://codeigniter.com/user_guide/database/active_record.html#set) – teemitzitrone

Respuesta

18

Esto no funciona con update, sólo que con set.

Esto debería funcionar:

$this->db->where('id', $userid); 
$this->db->set('invites', 'invites-1', FALSE); 
$this->db->set('sentinvites', 'sentinvites+1', FALSE); 
$this->db->update('users'); 

Esto puede funcionar también (el user guide es un poco confuso):

$this->db->where('id', $userid); 
$this->db->set(array('invites' => 'invites-1', 'sentinvites' => 'sentinvites+1'), FALSE); 
$this->db->update('users'); 
Cuestiones relacionadas