CakePHP3で最終ログイン日時をDBに保存する方法

@iwasaki 4views 更新:2017年5月19日

ビヘイビアを使うことで実現できるようです。

ビヘイビアはイベントによって発火するようになり、DBのレコード新規作成時、更新時、ユーザーログイン時などのイベントを取れるようです。

namespace App\Model\Table;

use App\Model\Table\AppTable; // similar to AppController

class UsersTable extends AppTable
{
    public function initialize(array $options)
    {
        parent::initialize($options);

        // 例:親クラスが$this->addBehavior('Timestamp');を呼び出していて、さらにイベントを追加したい場合
        if ($this->behaviors()->has('Timestamp') {
            $this->behaviors()->get('Timestamp')->config([
                'events' => [
                    'Users.login' => [
                        'last_login' => 'always'
                    ],
                ],
            ]);
        }
    }
}

なお、FBでログインした際には上記は正常に動作しませんでした。

参考

https://book.cakephp.org/3.0/ja/orm/behaviors.html#id11

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません