⚙️
【Laravel】多重連想配列のセッションデータの特定のkeyに対応するvalueを更新する方法
はじめに
あまりググっても出てこなかった方法なので、残しておきます。
この選択肢があればセッションの扱える幅が広がると思います。
仮のセッションデータ
例えばcartData
というキーに紐づいたセッションデータがあるとします。
取得
// 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を更新する方法
以下のコードで更新できる。
// 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()
と同じ感じですね
さいごに
ドキュメントにも明確には記載されていなかった...
Discussion