Почему Laravel 5.8 делает повторные запросы к базе данных при работе с сессией - PullRequest
0 голосов
/ 29 мая 2019

В Laravel 5.8 при работе с сеансом выполняется два дополнительных запроса к базе данных по сравнению с Laravel 5.7.

Laravel 5.7

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

Новая установка.Нет пакетов.

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Решено

В Laravel 5.8 было изменено промежуточное ПО

Illuminate/Session/Middleware/StartSession.php

В дескриптор метода был добавлен

$this->saveSession($request);

, если сеанс былнастроил его обновил в базе.

В Laravel 5.7 только в куки.

0 голосов
/ 30 мая 2019

Вы написали один и тот же запрос дважды.

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

Вы можете решить эту проблему, инициализируя этот запрос переменной, а затем используя переменную всякий раз, когда вам нужно.

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

Это должно удалить дубликаты.

Запрос в eloquent

$session = Session::query()->where('id','anFc8QgnSpMbMVHcuxAldxKdLhNyo3IUNavylQTD')->take(1)->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...