データベースにセッションを保存できません。
session.phpと.envの設定はしています。
セッションのマイグレーションも行いました。
sessionsテーブルに'latest_visit'カラム(TIMESTAMPでnullable)を用意しました。
ユーザーが最後にページを訪れた日時'latest_visit'をセッションに保存したいです。
PHP
1Route::get('/hello', 'HelloController@index');
PHP
1 // HelloControllerのindexメソッド 2 $date = time(); 3 $latest_visit = date("Y/m/d H:i:s", $date); 4 $request->session()->put('latest_visit', $latest_visit);
何度/helloを訪れてもデータベースの'latest_visit'はNULLになっています。
原因がわかる方教えてください。
追記
sessionsのデータベース定義
SQL
1CREATE TABLE `sessions` ( 2 `id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, 3 `user_id` int(10) UNSIGNED DEFAULT NULL, 4 `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL, 5 `user_agent` text COLLATE utf8mb4_unicode_ci, 6 `payload` text COLLATE utf8mb4_unicode_ci NOT NULL, 7 `last_activity` int(11) NOT NULL, 8 `latest_visit` timestamp NULL DEFAULT NULL 9) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
'latest_visit'を保存している処理(HelloControllerのindexメソッド内に記述)
PHP
1 $date = time(); 2 $latest_visit = date("Y/m/d H:i:s", $date); 3 $request->session()->put('latest_visit', $latest_visit);
'latest_visit'を取り出す処理ですが、そもそもページを訪問した後にデータベースの中身を見ると'latest_visit'がNULLになっているので、取り出す処理以前に保存されていないです。
PHP
1$last_time = $request->session()->get('latest_visit');
保存する際に$latest_visitは存在しています。
PHP
1 $date = time(); 2 $latest_visit = date("Y/m/d H:i:s", $date); 3 var_export($latest_visit); 4 // '2018/10/13 05:15:08' 5 $request->session()->put('latest_visit', $latest_visit);
$latest_visit = date("Y-m-d H:i:s", $date);
としても保存されません。
タイムスタンプ以外で、VARCHARを格納するカラムを作って文字列を保存させてもNULLになったので、何も保存できない状態です。
Laravelの標準のpayloadなどは正常に保存されます。
回答1件
あなたの回答
tips
プレビュー