Yii2数据库会话 - 存储其他属性和用户信息

Jam*_*esG 3 php session yii yii2

我正在使用Yii2的DBSession类将Web应用程序会话存储到一个名为的数据库表中session.

此表在默认情况下只能有3列- id,expiredata.

我想将其他信息存储到此表中,就像user_id登录用户一样.

编辑:所以有一个名为yii\web\MultiFieldSession的父类,但没有关于它如何使用的示例.我会看到我能发现的东西......

Vit*_*aly 6

创建迁移:

$this->createTable('session', [
    'id' => $this->char(40)->notNull(),
    'expire' => $this->integer(),
    'data' => $this->binary(),
    'user_id' => $this->integer()
]);

$this->addPrimaryKey('session_pk', 'session', 'id');
Run Code Online (Sandbox Code Playgroud)

将此添加到配置:

'components' => [
    'session' => [
        'class' => 'yii\web\DbSession',
        'writeCallback' => function($session){
            return [
                'user_id' => Yii::$app->user->id
            ];
        }
        // 'db' => 'mydb',  // the application component ID of the DB connection. Defaults to 'db'.
        // 'sessionTable' => 'my_session', // session table name. Defaults to 'session'.
    ],
Run Code Online (Sandbox Code Playgroud)