сеанс laravel, возвращающий нуль,

Просто простая функция в родном php

protected function some_function(){ session_start(); if(!isset($_SESSION['a'])) { $_SESSION['a'] = 'some value'; return true; } else { return $_SESSION['a']; } } 

на первом запуске он вернет bool (true), а затем "some value" как ожидалось.

Применяя это к сеансу laravel,

 protected function some_function(){ $a = Session::get('abc'); if(is_null($a)){ Session::put('abc', 'some value'); //return Session::get('abc'); return true; } else { return $a; } } 

По логике, в первом прогоне $ a будет null . а затем помещает "some value" в ключ abc и возвращает bool (true), как ожидалось.

Однако при последующем доступе Session::get('abc') возвращает null каждый раз. поэтому каждая попытка возвращает bool (true).

Я предположил, что сеанс не записывался должным образом, поэтому я проверил с получением значения ключа сразу после его установки.

комментируя строку в приведенном выше коде, он возвращает любое значение, которое я положил в Session::put('abc') . Таким образом, при записи данных ошибки не возникает.

Проблема здесь в попытке получить значение всегда возвращает значение null хотя я установил после первого запроса.

Я что-то пропустил?


РЕДАКТИРОВАТЬ

Использование базы данных в качестве драйвера, сеансы не сохраняются в базе данных. Ошибка не выводится. Реализация базы данных была правильной с помощью схемы таблиц сеансов, как описано в документах.

Попробуйте этот фрагмент. Непроверенный, но уверен, что он работает.

 if(Session::has('abc')) { return Session::get('abc'); } else { Session::put('abc', 'some value'); return true; } 

Пройдя через многие форумы, чтобы решить ту же проблему, я решил ее, установив мой драйвер сеанса в базу данных.

  'driver' => 'database', 

и созданная таблица в базе данных

  CREATE TABLE `sessions` ( `id` varchar(40) NOT NULL, `last_activity` int(10) NOT NULL, `data` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;