LoginSignup
5

More than 3 years have passed since last update.

【laravel】データベースでSESSIONの利用

Last updated at Posted at 2020-05-22

概要

laravelの初期設定ではセッション情報がファイルに保存されるようになっているため、データベースにセッション情報を保存する方法を投稿します。
またセッション情報を保存しているファイルは\strage\framework\sessionsです。

SESSIONの設定

セッション情報をデータベースに保存する場合は\config\session.php.envによる設定とデータベースの作成によって完了します。

configの設定

session.php
'driver' => env('SESSION_DRIVER', 'file'),
// ここを以下のように編集
'driver' => env('SESSION_DRIVER', 'database'),

.envの設定

.env
SESSION_DRIVER=file
// ここを以下のように編集
SESSION_DRIVER=database

データベースの作成

以下のコマンドでセッション用のマイグレーションファイルが作成されるので、作成後にマイグレーションを実行すればテーブルが作成されます。

コマンド
php artisan session:table

セッションの保存

$request->session()->put($key, $value);でキーのセッションを保存します。
name="input"のinputタグからフォーム入力したと仮定した例です。

Controller
public function put(Request $request) {
  $inp = $request->input;
  $request->session()->put('inp', $inp);
}

セッションの呼び出

$変数= $request->session()->get($key);で保存したセッションを取得してリダイレクト先で表示します。

Controller
public function index(Request $request) {
  $val = $request->session()->get('inp');
  return view('sample',['val'=>$val]);
}
view
{{val}}

セッションの削除

$request->session()->pull($key);でキーのセッションを削除します。

Contoller
public function del(Request $request) {
  $request->session()->pull('inp');
}

フラッシュ保存

フラッシュデータと言って、次のリクエスト間だけセッション情報を保存する方法です。
$request->session()->flash(キー, 値);でフラッシュ保存します。
name="input"のinputタグからフォーム入力したと仮定した例です。

Controller
public function flash(Request $request) {
  $inp = $request->input;
  $request->session()->flash('inp', $inp);
}

参考

Laravel 6.x HTTPセッション

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5