Yii приложение updateCounters (просмотров страниц) лучший способ? - PullRequest
1 голос
/ 11 февраля 2012

У меня есть веб-приложение Yii Powered с контроллером (PostController) и столбцом «view» в базе данных.

Как я могу обновить эти строки, когда посетители просматривают страницу сообщений?

Теперь мой код работает, но он правильный или есть какие-либо комментарии / предложения?

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

Ответы [ 3 ]

2 голосов
/ 14 февраля 2012

в модели 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 голос
/ 06 ноября 2013

Начиная с версии 1.1.8, вы можете использовать такой код:

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

Это будет быстрее.Больше информации здесь: http://www.yiiframework.com/doc/api/1.1/CActiveRecord#saveCounters-detail

0 голосов
/ 11 февраля 2012

Вам нужно создать модель для своего поста. Если вы называете эту модель, например, Post (если у вас ее еще нет). Вам необходимо обновить значение, используя этот код PHP:

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

Предполагается, что ваша строка имеет идентификатор со значением 1 (например, идентификатор страницы), и вы хотите обновить столбец представления значением 2.

Тип вашей модели - CActiveRecord. Найдите отличную документацию по адресу: http://www.yiiframework.com/doc/api/1.1/CActiveRecord#updateByPk-detail

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...