2012-02-11 6 views
1

J'ai une application web Yii Powered avec un contrôleur (PostController) et une colonne "view" dans la base de données.Yii app updateCounters (pages vues) meilleure façon?

Comment puis-je mettre à jour ces lignes lorsque les visiteurs voient la page de publication?

Maintenant, mon code fonctionne, mais est-ce correct ou y at-il des commentaires/suggestions?

public function actionView($id) 
{ 
    $this->render('view',array(
     'model'=>$this->loadModel($id), 
    )); 
    Quotes::model()->updateCounters(array('views'=>+1), 'id=' . $id); 
} 
+0

êtes-vous sûr que le nombre de vues est la seule chose que vous voulez suivre? pas la date ou le visiteur unique? Si oui, vous voulez une table séparée pour les vues –

Répondre

2

dans le modèle Citations:

public function afterFind() { 
    $this->view++; 
    $this->save(); 
} 

Cela mettra à jour chaque fois que des vues après trouver. dans le contrôleur:

public function actionView($id) 
{ 
    $this->render('view',array(
     'model'=>$this->loadModel($id),//or 'model'=>Quotes::model()->findByPk($id) 
    )); 
} 
0

Vous devez créer un modèle pour votre article. Si vous nommez ce modèle par exemple Post (si vous ne l'avez pas déjà). Vous devez mettre à jour la valeur en utilisant ce code PHP:

Post::model()->updateByPk(1, array('view' => 2)); 

En supposant que votre ligne a une carte d'identité avec la valeur 1 (Page ID par exemple) et que vous souhaitez mettre à jour la colonne de vue avec la valeur 2.

Le type de votre modèle est CActiveRecord. Trouvez une grande documentation sur: http://www.yiiframework.com/doc/api/1.1/CActiveRecord#updateByPk-detail

+0

où puis-je écrire ce code? module ou contrôleur? et où ? – Abudayah

Questions connexes