Сохранить последний выход пользователя - PullRequest
1 голос
/ 13 февраля 2012

Я пытаюсь сохранить время последнего выхода пользователя из системы в базе данных в Yii Framework.У меня есть WebUser как:

<?php

// this file must be stored in:
// protected/components/WebUser.php

class WebUser extends CWebUser {



    public function afterLogout()

    {
        $user=user::Model();
        $user->logOutDateTime='TEST';
        $user->saveAttributes(array('logOutDateTime'));
        parent::afterLogout();  
    }

}
?>

и в config \ main.php у меня есть эти строки

// application components
'components'=>array(
    'user'=>array(
        // enable cookie-based authentication
            'class'=>'WebUser',
            'allowAutoLogin'=>true,

    )

Пока я установил тип данных logOutDateTime в varchar, чтобы проверить, и я предполагаюкаждый раз, когда пользователь выходит из системы, он должен записать 'TEST' в базу данных, но ничего не делает.Где я ошибся?

Ответы [ 2 ]

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

Я не думаю, что в afterLogout () по-прежнему установлен пользователь Yii :: app () ->, поэтому я бы сделал что-то вроде (не проверено):

public function beforeLogout()
{
    if (parent::beforeLogout()) {
        $user = User::model()->findByPk(Yii::app()->user->id); // assuming you have getId() mapped to id column
        $user->logOutDateTime='TEST';
        $user->saveAttributes(array('logOutDateTime'));
        return true;
    } else {
        return false;
    }
}
1 голос
/ 14 февраля 2012
$user = user::Model();

должно быть:

$user = user::Model()->find(/* model_conditions */);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...