2012-12-12 32 views
3

我在我的控制器中有bellow登錄功能,並且試圖將登錄日期/時間保存到用戶數據庫表last_login下,這是一個DATETIME字段,登錄工作正常,但字段從來沒有得到填充..什麼可能會阻止這個問題或如何解決什麼應該得到輸出的想法?CakePHP在登錄時保存日期/時間

public function login() { 
    $this->layout = 'login'; 
    if ($this->request->is('post')) { 
     if ($this->Auth->login()) { 

      $this->User->id = $this->Auth->user('id'); // target correct record 
      $this->User->saveField('last_login', date(DATE_ATOM)); // save login time 

      $this->redirect($this->Auth->redirect()); 
     } else { 
      $this->Session->setFlash('Invalid username or password, try again', 'default', array('class' => 'warning')); 
     } 
    } 

回答

7

如果你的數據庫字段LAST_LOGIN設置爲DATETIME然後,你需要做的:

$this->User->saveField('last_login', date("Y-m-d H:i:s")); 

由於DATE_ATOM回報像2012-08-15T15:52:01+00:00,所以它不會得到插入 嘗試禁用AuthComponent :: autoRedirect像

public $components = array(
    'Auth' => array(
     ...... 
     'autoRedirect' => false //set to false to disable auto redirect 
    ), 
); 
+0

現在還沒有updati該字段,我甚至試圖改變字段爲varchar,所以它會保存一些東西,但它永遠不會被觸及..和cakephp永遠不會輸出任何錯誤。 – medoix

+0

@medoix將調試級別設置爲2並檢查對'saveField()'調用生成的SQL查詢。不要忘記評論'$ this-> redirect()',否則你將看不到'login'動作的SQL查詢。 – nIcO

+0

我禁用了重定向,它仍然重定向,我甚至放置了一個死亡('設置日期'); saveField後,它甚至沒有得到它,我發現。它顯示爲如果($ this-> Auth-> login()){在IF語句中只是立即重定向而不做任何事情... – medoix

1
Use this to print query: 

$log = $this->User->getDataSource()->getLog(false, false); 
debug($log); 
exit; 
+0

任何我放在saveField行後不會運行,如果該行是未註釋...我如何調試導致此問題的行?如果我在該行之前放置了一個die(),登錄功能就會死亡......太奇怪了。 – medoix

+0

嘗試:$ this-> User-> saveField('last_login',date(「Y-m-d H:i:s」),false); '假'用於將模型中的任何驗證設置爲false,以防驗證負責不執行查詢。 – cartina

+0

這是另一種做同樣事情的方法:'$ this - > data = Array('User'=> Array('id'=> $ this-> Auth-> user('id'),'last_login'= > date('Ymd H:i:s'))); $ this - > User - > save($ this - > data))' – cartina

相關問題