ビヘイビアを使用 †ビヘイビアを使用するとスマートに実装できそうです。 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またはパスワードが間違っています')); } } ビヘイビアを使用しない †上記のやり方だと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またはパスワードが間違っています')); } } |