1

我尝试在我的用户表中更新 de last_login_time,但 time() 总是比函数的 updatedTime 行为高 5 小时

public function behaviors()
{
    return array(
        'timestamps' => array(
            'class' => 'zii.behaviors.CTimestampBehavior',
            'createAttribute' => 'create_time',
            'updateAttribute' => 'update_time',
            'setUpdateOnCreate' => true,
        )
    );
}

我更新 last_login_time 的功能非常简单:

private function userLogedin()
{
    $user = User::model()->findByPk($this->auth->user_id);
    $user->last_login_time = date('Y-m-d H:i:s',time());
    return $user->save();
}

我怎样才能拥有与行为一相同的时间?有没有更友好的方法来创建这种更新?

非常感谢!我是 Yii 的新手,这是我的第一个应用程序,请多多关照 ^^

4

1 回答 1

5

CTimestampBehavior根据 . 报告的数据库服务器的本地时间设置时间NOW()。您的代码根据Web 服务器的本地时间设置时间,如time().

两台服务器之间的时区差异应解释 5 小时的差异。

如果您想使用与您自己的代码类似的语法来实现相同的效果CTimestampBehavior,则必须使用CDbExpression

$user = User::model()->findByPk($this->auth->user_id);
$user->last_login_time = new CDbExpression('NOW()');
return $user->save();

这里也有一个相同的例子。

于 2012-12-01T21:41:18.377 回答