Laravelでのsessionの扱い方とは?sessionを学んで正しく扱おう!

- システム
エンジニア - sessionの扱い方が知りたいです。
- プロジェクト
マネージャー - sessionの扱い方として2種類あります。それでは見ていきましょう。
Laravelでのsessionの扱い方とは?
今回は、Laravelでのsessionの扱い方について説明します。
Laravelでは、セッションを扱うためのAPIが準備されています。具体的な使い方について、コードを交えて紹介します。
Laravelでのsessionの扱い方に興味のある方はぜひご覧ください。
sessionグローバルヘルパ
Laravelでのsessionを扱う方法として、sessionグローバルヘルパがあります。
Laravelを対話的に動作させることができるtinkerを使って、セッション操作を確認してみましょう。
まずは、セッションの保存と取得の基本的な方法を記載します。
1 2 3 4 5 6 7 8 |
$ php artisan tinker Psy Shell v0.10.4 (PHP 7.4.1 ? cli) by Justin Hileman >>> // 値を保存 >>> session(['key' => 'value']); => null >>> // 値を取得 >>> $value = session('key'); => "value" |
全てのセッション値を取得するには、allを使用します。
1 2 3 4 5 6 7 8 9 10 11 |
>>> session(['key' => 'value']); => null >>> session(['key2' => 'value2']); => null >>> // 全てのセッション値を取得 >>> $data = session()->all(); => [ "key" => "value", "key2" => "value2", ] >>> |
セッション取得時に、存在しなければデフォルト値を取得することもできます。
1 2 3 4 |
>>> // セッションの取得(存在しなければデフォルト値を取得) >>> $value = session('key', 'default'); => "default" >>> |
セッションを削除するには、flushを使用します。
1 2 3 4 5 6 7 8 |
>>> session(['key' => 'value']); => null >>> // セッションの削除 >>> session()->flush(); => null >>> $data = session()->all(); => [] >>> |
key指定でセッションを削除するにはforgetを使用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
>>> // セッションの削除 >>> session()->flush(); => null >>> session(['key' => 'value']); => null >>> session(['key2' => 'value2']); => null >>> $data = session()->all(); => [ "key" => "value", "key2" => "value2", ] >>> // 特定のセッションを削除 >>> session()->forget('key'); => null >>> $data = session()->all(); => [ "key2" => "value2", ] >>> |
複数key指定でセッションを削除することもできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
>>> session(['key' => 'value']); => null >>> session(['key2' => 'value2']); => null >>> $data = session()->all(); => [ "key2" => "value2", "key" => "value", ] >>> // 特定のセッションを削除 >>> session()->forget(['key', 'key2']); => null >>> $data = session()->all(); => [] >>> |
セッション取得後に値を削除するにはpullを使用します。
1 2 3 4 5 6 7 8 9 10 11 12 |
>>> $value = session('key'); => "value" >>> $data = session()->all(); => [ "key" => "value", ] // 取得後に値を削除 >>> $value = session()->pull('key'); => "value" >>> $data = session()->all(); => [] >>> |
セッションの存在確認をするには、has/existsを使用します。
1 2 3 4 5 6 7 8 9 |
>>> session(['key' => null]); => null >>> // セッションの存在確認 >>> session()->has('key') => false >>> // セッションの存在確認(nullを許容) >>> session()->exists('key') => true >>> |
このようにLaravelでは、sessionグローバルヘルパでセッションを扱うことができます。
Requestインスタンス
Laravelでのsessionを扱う方法として、Requestインスタンスがあります。
Requestインスタンスを使用するには、ソースコードに
use Illuminate\Http\Request;
を記載してください。
値の保存は以下のように記述します。
1 2 |
// 値を保存 $request->session()->put('key', 'value'); |
値の取得は以下のように記述します。
1 2 3 4 5 6 |
// 値を取得 $value = $request->session()->get('key'); // 値を取得(存在しなければデフォルト値を取得) $value = $request->session()->get('key', 'default'); // セッションの値を全て取得 $data = $request->session()->all(); |
値の削除は以下のように記述します。
1 2 3 4 5 6 7 8 |
// セッションの削除 $request->session()->flush(); // 特定のセッションを削除 $request->session()->forget('key'); // 特定のセッションを削除 $request->session()->forget(['key1', 'key2']); // 取得後アイテムを削除 $value = $request->session()->pull('key'); |
値の存在チェックは以下のように記述します。
1 2 3 4 5 6 7 8 9 |
// 存在チェック if ($request->session()->has('key')) { // do something } // 存在チェック(nullを許容) if ($request->session()->exists('key')) { // do something } |
このようにLaravelでは、Requestインスタンスでセッションを扱うことができます。
ページを跨いでsessionを扱ってみよう!
Laravelでのページを跨いでsessionを扱う方法を紹介します。
routes/web.php
に以下のようにルーティング設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php use Illuminate\Support\Facades\Route; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/put-session', function () { session()->put(['key' => 'value']); return session()->get('key'); }); Route::get('/get-session', function () { return session()->get('key'); }); |
ブラウザから/put-sessionにアクセスすると、以下のように表示されます。
1 |
value |
その後、/get-sessionにアクセスすると、以下のように表示されます。
1 |
value |
ページを跨いでsessionが取得できていることが分かります。
view
viewでセッションを取得するには、以下のように記述します。
1 |
<div>session値:{{ session()->get('key') }} </div> |
- システム
エンジニア - このように、sessionグローバルヘルパとRequestインスタンスがあるのですね。
- プロジェクト
マネージャー - 実際に自分でコードを書いてsessionを覚えていきましょう。
まとめ
いかがでしたでしょうか。Laravelでのsessionの扱い方について説明しました。
ここで紹介したように、sessionグローバルヘルパやRequestインスタンスを使って、sessionを扱うことができます。
ぜひご自身でソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


PHP新着案件New Job
ECサイトの開発/HTML/東京都千代田区/【WEB面談可】/在宅勤務
月給26万~26万円東京都千代田区(秋葉原駅)採用管理システム運用保守/Apache/東京都渋谷区/【WEB面談可】
月給50万~60万円東京都渋谷区(代々木駅)採用管理システム開発のテスター/Apache/東京都渋谷区/【WEB面談可】
月給25万~35万円東京都渋谷区(代々木駅)社内システムの開発/PHP/神奈川県相模原市/【WEB面談可】/在宅勤務
月給45万~60万円神奈川県相模原市(相模大野駅)販売管理システム開発支援SE/PHP/東京都渋谷区/【WEB面談可】/テレワーク
月給45万~60万円東京都渋谷区(新宿駅)採用管理システムリプレース、追加開発/Apache/東京都渋谷区/【WEB面談可】
月給42万~48万円東京都渋谷区(代々木駅)