[[CakePHP3めも]]

*ビヘイビアを使用 [#hbb4e669]

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

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またはパスワードが間違っています'));
         }
     }

*ビヘイビアを使用しない [#p092ab81]

上記のやり方だとUPDATE処理でmodifiedフィールドが更新されなくなってしまいましした。
上記のやり方だとUPDATE処理でmodifiedフィールドが更新されなくなってしまいました。

なので、コントローラーのみで処理します。

AdminController.php
 use Cake\I18n\Time;
 
     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 = $this->Admins->patchEntity($entity, ['lastlogin' => Time::now()]);
                 $entity->setDirty('modified', true);
                 $this->Admins->save($entity);
 
                 return $this->redirect($this->Auth->redirectUrl());
             }
             $this->Flash->error(__('ログインIDまたはパスワードが間違っています'));
         }
     }

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS