繁体   English   中英

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

[英]Yii app updateCounters (page views) best way?

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

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

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

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

在Quotes模型中:

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.8开始,您可以使用以下代码:

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

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

您需要为帖子创建一个模型。 如果您将该模型命名为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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM