2013-01-14 4 views
0

J'ai un bouton, quand ce bouton est cliqué, il mettra à jour une ligne par +1.Ligne de mise à jour Zend

Il ne fonctionne pas seulement mettre à jour dans la table de base de données, la prochaine fois que je clique, il ne va pas à 2, il reste à 1. Je le veux, chaque fois que je clique .

Voici le funstion dans le modèle:

class Application_Model_DbTable_Row_User extends Sayka_Db_Table_Row_Abstract 
{ 
    public function grantDiscount() 
    { 
     $this->has_discount = has_discount + 1; 
       // $this->has_discount++; <- not working too, only increment to 1. 
     $this->save(); 
    } 
} 

Controller:

if (isset($_POST['btn_buy_now'])) 
{ 
    $user->grantDiscount(); 
} 

Répondre

1

D'habitude, je ne pas utiliser l'objet DbTable_Row de cette manière moi, mais je pense que votre fonction devrait ressembler à:

<?php 
class Application_Model_DbTable_Row_User extends Sayka_Db_Table_Row_Abstract 
{ 
    public function grantDiscount() 
    { 
     /*row object->column->has_discount = row object->column->has_discount +1*/ 
     $this->has_discount = $this->has_discount + 1; 

     $this->save(); 
     /*returning the row object may or may not be important or helpful in this case.*/ 
     return $this; 
    } 
} 

Gardez à l'esprit que save() retourne la clé primaire (s) de la ligne insérée/mise à jour ou une exception.

+0

Merci, je vais essayer et ça a du sens. –

0

Y a-t-il une différence entre Zend_Db_Table_Row_Abstract et Sayka_Db_Table_Row_Abstract? Probablement, il remplace les méthodes magiques originales de zend __get et __set.