2012-02-11 32 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

相關問題