3

コントローラーに次のログイン機能があり、ログインの日付/時刻をユーザーデータベーステーブルの DATETIME フィールドである last_login フィールドに保存しようとしています。ログインは正常に機能しますが、フィールドには値が入力されません。これを停止するか、出力を取得する必要があるものをトラブルシューティングする方法は?

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'));
        }
    }
4

2 に答える 2

7

データベースの last_login フィールドがDATETIMEthen に設定されている場合は、次のことを行う必要があります。

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

AsDATE_ATOMは のようなものを返す2012-08-15T15:52:01+00:00ので、挿入されません AuthComponent::autoRedirect を無効にしてみてください。

public $components = array(
    'Auth' => array(
        ......
        'autoRedirect' => false  //set to false to disable auto redirect
    ),
);
于 2012-12-12T11:32:11.367 に答える
1
Use this to print query:

$log = $this->User->getDataSource()->getLog(false, false);
debug($log);
exit;
于 2012-12-13T04:15:46.613 に答える