У меня есть вопрос о связывании моих таблиц базы данных с моей сессионной таблицей в Laravel 5.6.
Я хотел связать тех, кто когда-либо создает адрес электронной почты в таблице user_emails
, с таблицей session
, чтобы в будущем я мог получить информацию об этой транзакции - например, IP-адрес.
Я использую следующий код:
$email = new UserEmail();
$email->user_id = $user->id;
$email->address = $request->email;
$email->token = str_random(30);
$email->session_id = session()->getId();
$email->save();
Это сохранит поле session_id
как (в этом примере) UkPhMBTVq73MX8KaS8CZy0vDG9wtDSNvSYhsRuvL
внутри таблицы user_emails с user_id
из 62
.
Однако, когда я проверяю таблицу sessions
для записи с user_id = 62
, поле id
устанавливается на DuQq6JqcFL2HiGGLGJQ9hLNeXaxUAkdYTlJEX1Ag
.
Мне кажется, что идентификатор сеанса изменяется немедленно при сохранении записи в таблицу user_emails
. Это также означает, что я не могу создать внешний ключ между user_emails.session_id
и sessions.id
, поскольку это вызывает проблему ограничения внешнего ключа.
Это предполагаемое поведение? Я ожидал, что таблица сеансов создаст новую строку для каждого нового сеанса, в отличие от перезаписи существующей строки.
Надеюсь, кто-нибудь сможет пролить свет на это. Было бы неплохо иметь возможность связать активность с sessions
для дальнейшего анализа. Моя логика в этом случае будет заключаться в том, чтобы проверить, откуда поступил запрос, если пользователь сообщит о том, что регистрация не авторизована, когда он получит приветственное письмо.
У меня, конечно, драйвер сеанса установлен в базу данных, так что Laravel автоматически сохраняет все мои данные сеанса.