首页 > 解决方案 > YII2 Session 一次请求保存多条记录

问题描述

我正在尝试使用 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(),
           ];
        },

    ],

在此处输入图像描述

标签: yii2

解决方案


第一列 ( ) 是主键,应该是唯一的(在迁移id中以这种方式声明)。您可能弄乱了表架构 - 您应该无法保存 3 条具有相同 ID 的记录。正在使用并依赖于列的唯一性。DbSessionupsert()id

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


推荐阅读