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

时间:2018-05-17 10:01:33

标签: php arrays laravel session laravel-4.2

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

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

         ]

我没有找到除此之外的方法

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

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

2 个答案:

答案 0 :(得分:1)

您只需将信息存储在所需的密钥中,例如:

$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')将从会话中删除关键“购物车”,这意味着Session::has('cart') == false且Session::get('cart')为空

如果您计划将密钥用作Id(在Session :: put($ cartId,$ cartDetails)行中的某些东西),我不建议稍后,如果您需要添加具有相同逻辑的东西,你会破坏Session的密钥,并可能覆盖它。同样适用于其他人看一下代码(或者甚至是你在不久的将来)并且需要阅读代码,除非你阅读整个函数,否则会话中没有明确的看法。 (IMO)

  

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

答案 1 :(得分:0)

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

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

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

当您想要检索其值时,只需:

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

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