Php 拉威尔没有';t在数据库中存储额外的会话属性

Php 拉威尔没有';t在数据库中存储额外的会话属性,php,laravel,sqlite,session,laravel-session,Php,Laravel,Sqlite,Session,Laravel Session,我试图使用laravel会话逻辑在用户的会话表中存储一个特定属性 会话表迁移 Schema::create('sessions', function (Blueprint $table) { $table->string('id')->unique(); $table->unsignedInteger('user_id')->nullable(); $table->string('ip_address', 45)->nullable()

我试图使用laravel会话逻辑在用户的会话表中存储一个特定属性

会话表迁移

Schema::create('sessions', function (Blueprint $table) {
    $table->string('id')->unique();
    $table->unsignedInteger('user_id')->nullable();
    $table->string('ip_address', 45)->nullable();
    $table->text('user_agent')->nullable();
    $table->text('payload');
    $table->text('activeEvent')->nullable();
    $table->integer('last_activity');
});
环境配置

APP_NAME=Laravel
APP_ENV=local
APP_KEY={KEY}
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=sqlite

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=database
SESSION_LIFETIME=120
代码

Route::post('/set-event', function(Request $request){
    Session::put('activeEvent', $request->get('event'));
    Session::save();
    return redirect()->route('home');
});
sessions表中的每个属性都会更新,但“activeEvent”属性始终为空

“$request->get('event')”返回所选事件的整数。已通过将activeEvent的数据类型设置为整数来尝试此操作

还尝试了以下狙击手:

$request->session()->push
$request->session()->put
$request->session()->keep
什么都没用。如何在数据库中存储activeEvent属性?或者这不可能吗


我使用的是PHP7.2/Laravel 5.7/SQLITE

似乎您对Laravel会话的数据库驱动程序的工作方式有错误的想法。
会话
表的每一行代表一个用户的所有会话数据。当您执行
Session::put('activeEvent',$value)时
它将此
'activeEvent'=>$value
键/值对存储到
有效负载
列中

您不需要更改此表来为要存储的每个键提供列—数据库会话驱动程序将序列化所有键/值对,并将其放入
有效负载
列中

因此,在您的例子中,将
sessions
表迁移还原为使用
php-artisan-session:table
命令第一次生成它时的方式。并像往常一样使用会话:
put()
存储;
get()
阅读:

Route::post('/set event',函数(Request$Request){
会话::put('activeEvent',$request->get('event');
return redirect()->route('home');
});
...
//当您需要检索值时的某个位置
$activeEvent=Session::get('activeEvent');

对于Laravel会话的数据库驱动程序的工作方式,您似乎有一个错误的想法。
会话
表的每一行代表一个用户的所有会话数据。当您执行
Session::put('activeEvent',$value)时
它将此
'activeEvent'=>$value
键/值对存储到
有效负载
列中

您不需要更改此表来为要存储的每个键提供列—数据库会话驱动程序将序列化所有键/值对,并将其放入
有效负载
列中

因此,在您的例子中,将
sessions
表迁移还原为使用
php-artisan-session:table
命令第一次生成它时的方式。并像往常一样使用会话:
put()
存储;
get()
阅读:

Route::post('/set event',函数(Request$Request){
会话::put('activeEvent',$request->get('event');
return redirect()->route('home');
});
...
//当您需要检索值时的某个位置
$activeEvent=Session::get('activeEvent');

您什么时候在“sessions”表中创建DB条目,我可以看到该代码,以及路由“/set event”的整个$request对象中的所有内容吗?您刚刚阅读了文档,尝试过:$request->session()->get('event')@BradGoldsmith我认为laravel将使用“Session::put”和“Session::save”存储该属性。我必须手动设置会话属性吗?使用“$request->session()->get('event')”进行检索也不起作用。您表中的activeEvent是您自己自定义的列吗?您什么时候在“sessions”表中创建DB项,我可以看到该代码吗,以及路由“/set event”的整个$request对象中的所有内容?您刚刚阅读了文档,尝试过:$request->session()->get('event')@BradGoldsmith我认为laravel将使用“Session::put”和“Session::save”存储该属性。我必须手动设置会话属性吗?使用“$request->session()->get('event')”进行检索也不起作用。表中的activeEvent是您自己的自定义列吗?