【问题标题】:Yii app updateCounters (page views) best way?Yii app updateCounters(页面浏览量)最好的方法?
【发布时间】:2012-02-11 19:08:19
【问题描述】:

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

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

现在我的代码正在运行,但它是否正确或有任何 cmets/建议?

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

【问题讨论】:

  • 您确定观看次数是您要跟踪的唯一内容吗?不是日期或唯一访客?如果是这样,您需要一个单独的视图表

标签: php yii


【解决方案1】:

在报价模型中:

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)
    ));
}

【讨论】:

    【解决方案2】:

    从1.1.8开始,你可以使用这样的代码:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我在哪里可以写这段代码?模块或控制器?在哪里?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      相关资源
      最近更新 更多