[[CakePHP3めも]]

ビヘイビアを使用するとスマートに実装できそうです。

adminsテーブルにlastloginフィールドをdatetime型で用意しておきます。

**ビヘイビアにイベントを定義 [#n90fa244]

AdminsTable.php
     public function initialize(array $config)
     {
         $this->addBehavior('Timestamp', [
             'events' => [
                 'Admins.login' => [
                     'lastlogin' => 'always'
                 ]
             ]
         ]);
     }

**コントローラーからイベントを呼び出し [#wf14c6cf]

AdminController.php
     public function login()
     {
         if ($this->request->is('post')) {
             $user = $this->Auth->identify();
             if ($user) {
                 $this->Auth->setUser($user);
 
                 // 最終ログイン日時を保存
                 $this->loadModel('Admins');
                 $entity = $this->Admins->get($user['id']);
                 $entity->setDirty('modified', true);
                 $this->Admins->touch($entity, 'Admins.login');
                 $this->Admins->save($entity);
 
                 return $this->redirect($this->Auth->redirectUrl());
             }
             $this->Flash->error(__('ログインIDまたはパスワードが間違っています'));
         }
     }



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS