Yii app updateCounters(页面浏览量)最佳方式?

时间:2012-02-11 19:08:19

标签: php yii

我有一个带有控制器(PostController)和数据库中“视图”列的Yii Powered Web应用程序。

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

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

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

3 个答案:

答案 0 :(得分: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)
    ));
}

答案 1 :(得分:1)

从1.1.8开始,您可以使用以下代码:

$this->saveCounters(array('views'=>1));

会更快。请在此处查看更多信息:http://www.yiiframework.com/doc/api/1.1/CActiveRecord#saveCounters-detail

答案 2 :(得分:0)

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

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

假设您的行的ID值为1(例如,页面ID),并且您希望使用值2更新视图列。

您的模型类型是CActiveRecord。在以下网址找到精彩的文档:http://www.yiiframework.com/doc/api/1.1/CActiveRecord#updateByPk-detail