Udemyのオススメ講座はこちら 詳細を見てみる

【Laravel】多重連想配列のセッションの特定のkeyに対応するvalueを更新する方法

  • URLをコピーしました!

この記事では多重連想配列形式のセッション情報の特定のkeyに対応するvalueを更新する方法を紹介します。

多重連想配列とは以下のような連想配列(key => value)のvalueが連想配列になっているやつです。

'a' => [
    'b' => 'c'
]

あまりググっても出てこなかった方法なので誰かの参考になるかも…という思いで残しておきます。

この選択肢があればセッション情報を扱える幅が広がると思います。

目次

仮のセッションデータ

例えばcartDataというキー(key)に紐づいたセッションデータがあるとします。

取得

セッションデータを取得する方法はいつくかあります。(どれでも良いと思う)

// Requestインスタンスを使用する場合
$request->session()->get('cartData');

// ヘルパー関数を使用する場合
session()->get('cartData');

// ファサードを使用する場合
Session::get('cartData');

取得した内容

[
    [0] => [
        'item_name' => 'ジャケット',
        'item_count' => 1,
    ],
    [1] => [
        'item_name' => '靴下',
        'item_count' => 3,
    ],
    [2] => [
        'item_name' => 'バッグ',
        'item_count' => 2,
    ],
]

実現したいこと

サンプルケースですが、先ほど書いたセッション情報のうち、靴下の個数を3個 → 5個にしたいとします。

[1] => [
    'item_name' => '靴下',
    'item_count' => 3, // 5にしたい
],

セッションの特定のkeyに対応するvalueを更新する方法

それでは実際に更新する方法として取得同様いくつかありますが、いずれもput()を使います。

// Requestインスタンスを使用する場合
$request->session()->put('cartData.1.item_count', 5);

// ヘルパー関数を使用する場合
session()->put('cartData.1.item_count', 5);

// ファサードを使用する場合
Session::put('cartData.1.item_count', 5);

put()第1引数に連想配列の階層を文字列連結することで特定のkeyのvalueにアクセスすることができます。

configディレクトリ以下に定義した情報を呼び出すときのconfig()と同じ感じですね。

さいごに

公式ドキュメントにも明記されていなかったので、誰かの役に立てたら良いですね。という感じです。

Laravelの学習にはこちらの書籍・教材がオススメなので気になる方はぜひ覗いてみてください。

Udemyのオススメ講座はこちら↓

TypeScript+Next.js+Laravelハンズオンはこちら↓

デスク周りのオススメアイテムはこちら↓

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

ブログを開設するなら「SWELL」が絶対オススメ!

この記事を書いた人

大学院(機械工学)→重工業→エンジニア→プロダクトマネージャー(PdM)兼エンジニア

神戸で「つながる勉強会」を運営↓
https://tsunagaru-kobe.connpass.com/

神戸グルメのインスタアカウントを運用しています。

目次