Yii框架时间()与行为时间()不一样

Mik*_*tin 1 php time frameworks yii

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

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

我更新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();
}
Run Code Online (Sandbox Code Playgroud)

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

非常感谢你!我是Yii的新手,这是我的第一个应用程序,所以请善待^^

Jon*_*Jon 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();
Run Code Online (Sandbox Code Playgroud)

还有同样的例子在这里.