YII2会话在一个请求上保存多个记录

问题描述 投票:0回答:1

我正在尝试使用Dbsession跟踪用户的活动,并且我已经根据yii文档进行了所有设置和运行,但是当用户加载页面时,一个会话中的多个会话记录被保存在数据库中。下图显示了数据库中的数据是什么原因以及解决此问题的解决方案?在我的配置文件中,我有这个

'session' => [
        // this is the name of the session cookie used for login on the frontend
        //'name' => 'advanced-frontend',
        'class' => 'yii\web\DbSession',
        'writeCallback' => function ($session) {
            return [
               'user_id' => \Yii::$app->user->id,
               'ip' => \Yii::$app->clientip->get_ip_address(),
           ];
        },

    ],

enter image description here

yii2
1个回答
0
投票

第一列(id)是主键,并且应该是唯一的(在migration中以此方式声明)。您可能已经弄乱了表模式-您应该无法保存具有相同ID的3条记录。 DbSession正在使用upsert(),并依赖upsert()列的唯一性。

确保id列是主键,或至少具有UNIQUE约束。

© www.soinside.com 2019 - 2024. All rights reserved.