我试图更新用户表中的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,
)
);
}
我更新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的新手,这是我的第一个应用程序,所以请友善^^
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();
这里还有一个同样的例子。