从 laravel 中的一个后缀获取所有会话

Posted

技术标签:

【中文标题】从 laravel 中的一个后缀获取所有会话【英文标题】:get all session from one suffix in laravel 【发布时间】:2020-03-25 18:16:25 【问题描述】:

我想通过 laravel 创建一个商店网站。现在我想在我的网站中创建购物车页面。

我想为用户想要购买的每一种产品创建一个会话。

并在购物车页面中显示它们

来自产品的所有信息保存在一个数组中。然后我用这个数组值创建一个会话。

这样的数组和会话

        $data = [
        'product' => $request->input('product'),
        'quantity' => 1,
        'price' => $request->input('price')
        ];

        $request->session()->put('cart_'. $request->input('product_id') , $data);

您可以看到我为用户选择的每个产品创建了一个会话,会话名​​称是购物车_(产品 ID)

现在我想在购物车页面中显示所有带有 (cart_) 后缀的会话。

但我不知道如何以不同的名称和一个后缀显示每个会话。

例如

用户想购买三种产品

我创建了三个不同名称但后缀的会话

我想显示用户在购物车页面中选择的所有产品

会议



        $data = [
        'product' => product test,
        'quantity' => 1,
        'price' => 300
        ];

        $request->session()->put('cart_433' , $data);

// -------------------

        $data = [
        'product' => product test2,
        'quantity' => 1,
        'price' => 600
        ];

        $request->session()->put('cart_10' , $data);
// -----------------------

        $data = [
        'product' => product test3,
        'quantity' => 1,
        'price' => 200
        ];

        $request->session()->put('cart_54' , $data);

我想这样展示

<p>product test<p>
<p>300</p>
<hr>

<p>product test2<p>
<p>600</p>
<hr>

<p>product test3<p>
<p>200</p>

<hr><hr>
<p>1100</p>

【问题讨论】:

【参考方案1】:

您可以将购物车的所有产品放在一个会话变量下。

了解 Session::putSession::push 之间的区别。 Session::push 附加到现有数据,Session::put 删除现有数据和更新。

$data = array(
        "product" => 1,
        "quantity" => 1,
        "price" => 1
        );

Session::push('cart', $data); //inserting 1st item

$data = array(
   "product" => 2,
   "quantity" => 2,
   "price" => 2
   );

Session::push('cart', $data); //inserting 2nd item

$data= array(
    "product" => 3,
    "quantity" => 3,
    "price" => 3
    );

Session::push('cart', $data);//inserting 3rd item

然后你会得到 Session 的输出

//dd(Session::get('cart'));
array:3 [▼
  0 => array:3 [▼
    "product" => 1
    "quantity" => 1
    "price" => 1
  ]
 1 => array:3 [▼
   "product" => 2
   "quantity" => 2
   "price" => 2
 ]
 2 => array:3 [▼
   "product" => 3
   "quantity" => 3
   "price" => 3
 ]
] 

然后您可以循环进入Session::get('cart') 并根据需要发布结果

仅供参考

foreach(Session::get('cart') as $item)

    dump($item['product']);
    dump($item['quantity']);
    dump($item['price']);

【讨论】:

以上是关于从 laravel 中的一个后缀获取所有会话的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 中获取所有服务器会话的列表?

Laravel - 从会话数组中获取项目

当所有检索值在laravel中具有相同的会话键时,如何检查会话数组是不是具有唯一的ID

Laravel:如何访问 AppServiceProvider 中的会话值?

如何从数据库中获取数据以及会话如何在 laravel 中工作? [复制]

如何从 laravel 中的会话数组中删除项目