2010-09-05 14 views
8

Ecco la mia domanda, in Active Record di CodeIgniter:CodeIgniter/PHP attivo Record non viene incrementato un intero

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

I campi invites e sentinvites sono entrambi interi, ma sono impostati a 0 dopo la funzione viene eseguito. Questo mi fa presumere che CodeIgniter stia passando invites-1 e sentinvites+1 come stringhe, ma pensavo che l'aggiunta di FALSE alla fine l'abbia impedito di farlo?

Grazie!

Jack

+0

dal CI- Active Record is't lavora quasi il modo in cui si aspetta un AC per lavorare ... qui il referente ci-user-guide [active_record] (http://codeigniter.com/user_guide/database/active_record.html#set) – teemitzitrone

risposta

18

Questo non funziona con update, solo con set.

Questo dovrebbe funzionare:

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

Questo può funzionare troppo (il user guide è un po 'poco chiaro):

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