CakePHP3めも

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

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

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