2012-02-11 77 views
1

我有一个控制器(PostController)和数据库中的“视图”列的Yii Powered web应用程序。Yii应用程序updateCounters(页面浏览量)最佳方式?

访问者查看帖子页面时,如何更新这些行?

现在我的代码正在工作,但它是正确的还是有任何意见/建议?

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

您确定要查看的视图数量是唯一要跟踪的吗?不是日期或独特的访客?如果是这样,你会想要一个单独的表 – 2012-02-11 20:49:19

回答

2

的行情模式:

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

这将更新视图每次找到后。 在控制器:

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

您需要为您的帖子创建一个模型。如果您将该模型命名为Post(如果您还没有)。您需要使用这个PHP代码更新值:

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

假设你行有值1(例如页ID)的ID,并要与值2

更新视图的列你的模型的类型是CActiveRecord。找到很好的文档:http://www.yiiframework.com/doc/api/1.1/CActiveRecord#updateByPk-detail

+0

在哪里可以写这个代码?模块还是控制器?和哪里? – Abudayah 2012-02-11 20:36:16