ビヘイビアを使用するとスマートに実装できそうです。
adminsテーブルにlastloginフィールドをdatetime型で用意しておきます。
AdminsTable.php
public function initialize(array $config) { $this->addBehavior('Timestamp', [ 'events' => [ 'Admins.login' => [ 'lastlogin' => 'always' ] ] ]); }
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またはパスワードが間違っています')); } }