首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Laravel 5.8在使用会话时对数据库进行重复查询

为什么Laravel 5.8在使用会话时对数据库进行重复查询
EN

Stack Overflow用户
提问于 2019-05-30 04:37:10
回答 2查看 415关注 0票数 1

在Laravel 5.8中,当使用会话时,与Laravel 5.7相比,对数据库执行了两个额外的查询。

Laravel 5.7

代码语言:javascript
复制
select * from `sessions` where `id` = '00kaQxJLG6roUAp9DaCui7esa31sbthHqEzwW62H' limit 1

Laravel 5.8

代码语言:javascript
复制
select * from `sessions` where `id` = 'anFc8QgnSpMbMVHcuxAldxKdLhNyo3IUNavylQTD' limit 1

update `sessions` set `payload` = 'YTozOntzOjY6Il90b2tlbiI7czo0MDoiQm12QlFHNzVNRVpZcTRkMWZwcmNMS2kwcm12czlvZkpXZUg0cFpEQyI7czo5OiJfcHJldmlvdXMiO2E6MTp7czozOiJ1cmwiO3M6MTY6Imh0dHA6Ly9kZXYubG9jYWwiO31zOjY6Il9mbGFzaCI7YToyOntzOjM6Im9sZCI7YTowOnt9czozOiJuZXciO2E6MDp7fX19', `last_activity` = 1559161593, `user_id` = '', `ip_address` = '127.0.0.1', `user_agent` = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/73.0.3683.86 Chrome/73.0.3683.86 Safari/537.36' where `id` = 'anFc8QgnSpMbMVHcuxAldxKdLhNyo3IUNavylQTD'

select * from `sessions` where `id` = 'anFc8QgnSpMbMVHcuxAldxKdLhNyo3IUNavylQTD' limit 1

新安装。没有包裹。

EN

回答 2

Stack Overflow用户

发布于 2019-05-30 05:48:39

解析的

在Laravel 5.8中更改了中间件

代码语言:javascript
复制
Illuminate/Session/Middleware/StartSession.php

在方法句柄中添加了

代码语言:javascript
复制
$this->saveSession($request);

如果已配置会话,则会在数据库中对其进行更新。

在Laravel 5.7中,仅在cookies中。

票数 1
EN

Stack Overflow用户

发布于 2019-05-30 05:26:51

您已经编写了两次相同的查询。

代码语言:javascript
复制
select * from `sessions` where `id` = 'anFc8QgnSpMbMVHcuxAldxKdLhNyo3IUNavylQTD' limit 1

您可以通过将此查询初始化为一个变量,然后在需要时使用该变量来解决此问题。

代码语言:javascript
复制
$session = select * from `sessions` where `id` = 'anFc8QgnSpMbMVHcuxAldxKdLhNyo3IUNavylQTD' limit 1;

这应该会删除重复项。

雄辩中的查询

代码语言:javascript
复制
$session = Session::query()->where('id','anFc8QgnSpMbMVHcuxAldxKdLhNyo3IUNavylQTD')->take(1)->get();
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56368161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档