概要
laravelの初期設定ではセッション情報がファイルに保存されるようになっているため、データベースにセッション情報を保存する方法を投稿します。
またセッション情報を保存しているファイルは\strage\framework\sessions
です。
SESSIONの設定
セッション情報をデータベースに保存する場合は\config\session.php
と.env
による設定とデータベースの作成によって完了します。
configの設定
'driver' => env('SESSION_DRIVER', 'file'),
// ここを以下のように編集
'driver' => env('SESSION_DRIVER', 'database'),
.envの設定
SESSION_DRIVER=file
// ここを以下のように編集
SESSION_DRIVER=database
データベースの作成
以下のコマンドでセッション用のマイグレーションファイルが作成されるので、作成後にマイグレーションを実行すればテーブルが作成されます。
php artisan session:table
セッションの保存
$request->session()->put($key, $value);
でキーのセッションを保存します。
name="input"のinputタグからフォーム入力したと仮定した例です。
public function put(Request $request) {
$inp = $request->input;
$request->session()->put('inp', $inp);
}
セッションの呼び出
$変数= $request->session()->get($key);
で保存したセッションを取得してリダイレクト先で表示します。
public function index(Request $request) {
$val = $request->session()->get('inp');
return view('sample',['val'=>$val]);
}
{{val}}
セッションの削除
$request->session()->pull($key);
でキーのセッションを削除します。
public function del(Request $request) {
$request->session()->pull('inp');
}
フラッシュ保存
フラッシュデータと言って、次のリクエスト間だけセッション情報を保存する方法です。
$request->session()->flash(キー, 値);
でフラッシュ保存します。
name="input"のinputタグからフォーム入力したと仮定した例です。
public function flash(Request $request) {
$inp = $request->input;
$request->session()->flash('inp', $inp);
}
参考
[Laravel 6.x HTTPセッション]
(https://readouble.com/laravel/6.x/ja/session.html)