Laravel 4.2 : 在会话中保留多维数组数据

Laravel 4.2 : keep multidimensional array data in session

在我的 laravel 4.2 应用程序中,我想在会话中存储购物车项目的详细信息。

cartId =>[
            0 => [
                productId => x,
                quantity  => y
            ],
            1 => [
                productId => u,
                quantity  => v
            ],
            2 => [
                productId => l,
                quantity  => m
            ]

         ]

除了这个我没找到其他方法

Session::push('user.teams', 'developers');

用于在会话中存储为数组。 但同样不适用于这里

看来您可以直接在会话中插入数组。

$someArray = ['name' => 'John Doe', 'username' => 'jdoe'];

Session::put('user', $someArray);

当你想取回它的值时只需要:

$user = Session::get('user');
echo $user['name'] // output: John Doe

同样适用于多维数组...

你可以只将信息存储在需要的key中,如:

$cartDetails = [ 
                 0 => [
                       productId => x,
                       quantity  => y
                 ],
                 1 => [
                       productId => u,
                       quantity  => v
                 ],
                 2 => [
                       productId => l,
                       quantity  => m
                 ]
               ];

Session::put('cart', $cartDetails);

每个用户都有自己的购物车,您可以使用 Session::has('cart') 进行验证,Session::get('cart') 将为您提供 $cartDetails 的内容。

Session::forget('cart') 将从会话中删除密钥 'cart',这意味着 Session::has('cart') == false 并且 Session::get('cart') 为 null

如果您打算使用密钥作为 Id(Session::put($cartId, $cartDetails) 中的某些内容),我不会建议您稍后使用,如果您需要添加一些内容同样的逻辑,您将破坏会话的密钥并可能覆盖它。如果其他人查看代码(或者甚至在不久的将来您)并需要阅读代码,同样适用,除​​非您阅读整个函数,否则对会话中的内容没有清晰的认识。 (海事组织)

https://laravel.com/docs/4.2/session