この記事では多重連想配列形式のセッション情報の特定の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にアクセスすることができます。
さいごに
公式ドキュメントにも明記されていなかったので、誰かの役に立てたら良いですね。という感じです。
Laravelの学習にはこちらの書籍・教材がオススメなので気になる方はぜひ覗いてみてください。
あわせて読みたい


【現役エンジニア厳選】Laravel学習にオススメの書籍・教材(レベル別)
プログラミング言語PHPのフレームワークであるLaravelを学習するための書籍・教材の中で、現役Laravelエンジニアの僕がオススメするものをご紹介します。 Laravelを勉強…
コメント