2012-12-01 12 views
1

我嘗試在我的用戶更新表中去last_login_time,但時間()總是與功能Yii框架時間()不一樣的行爲時間()

public function behaviors() 
{ 
    return array(
     'timestamps' => array(
      'class' => 'zii.behaviors.CTimestampBehavior', 
      'createAttribute' => 'create_time', 
      'updateAttribute' => 'update_time', 
      'setUpdateOnCreate' => true, 
     ) 
    ); 
} 
5h中比updatedTime行爲高

我的功能更新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(); 
} 

我怎樣才能具有相同的時間比行爲嗎?有沒有更好的方法來創建這種更新?

非常感謝!我與誼對於新手,這是我的第一個應用程序,所以善待請^^

回答

5

CTimestampBehavior基礎上設置數據庫服務器的本地時間的時間,由NOW()報道。您的代碼根據當地時間網絡服務器的設置時間,如time()所報告。

兩臺服務器之間的時區差異應該考慮5小時的差異。

如果你想達到的CTimestampBehavior語法爲自己的代碼相似同樣的效果,你將不得不使用CDbExpression

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

還有就是同here的例子。

+0

非常感謝!我會深入學習這門課^^ –