我有一个带有控制器(PostController)和数据库中“视图”列的Yii Powered Web应用程序。
如果访问者查看帖子页面,如何更新这些行?
现在我的代码正常运行,但是它是正确的还是有任何意见/建议?
public function actionView($id)
{
$this->render('view',array(
'model'=>$this->loadModel($id),
));
Quotes::model()->updateCounters(array('views'=>+1), 'id=' . $id );
}
答案 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