Yii应用程序updateCounters(页面浏览量)最佳方式?
问题描述:
我有一个控制器(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);
}
答
的行情模式:
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)
));
}
答
您需要为您的帖子创建一个模型。如果您将该模型命名为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
答
自从1.1.8,你可以使用这样的代码:
$this->saveCounters(array('views'=>1));
它会更快。在此处查看更多信息:http://www.yiiframework.com/doc/api/1.1/CActiveRecord#saveCounters-detail
您确定要查看的视图数量是唯一要跟踪的吗?不是日期或独特的访客?如果是这样,你会想要一个单独的表 – 2012-02-11 20:49:19