无法更改 Laravel 会话数组中的单个值

Posted

技术标签:

【中文标题】无法更改 Laravel 会话数组中的单个值【英文标题】:Cant change single value in session array in Laravel 【发布时间】:2020-10-11 10:20:54 【问题描述】:

这是我的产品方法更新。并且不能改变产品的数量。数据保存在 foreach 中,但没有任何改变。我不明白这是什么问题。

if (!session()->has('products')) 
            session()->put('products', []);

        

        $products = session()->get('products');

        foreach ($products as $item) 
            if (isset($item[$product->id])) 
                $item[$product->id]['qty'] = 10;
                dd($products); // dd($item) - changes
                $request->session()->put('products', $products);
                return redirect()->back();
            

        


        session()->push('products', [
            $product->id => [
                'product' => $product,
                'qty' => 1
            ]
        ]);


        return redirect()->back();

如您所见,有 dd($products) - 所以它不会改变。但是如果 dd($item) 所以它有 10 个。

【问题讨论】:

【参考方案1】:

我可以用下一个解决这个问题:

foreach ($products as $key => $value) 
    if (isset($value[$product->id])) 
        $value[$product->id]['qty'] = 10;
        $products[$key] = $value;
        $request->session()->put('products', $products);
        return redirect()->back();
    

只需添加一个 $key => $value 并将其保存在 $products[$key] = $value;

【讨论】:

以上是关于无法更改 Laravel 会话数组中的单个值的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 无法检索保存在 POST 请求中的会话数据

Laravel 流明 |从数组中获取单个值

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

在 laravel 6 中更新会话数组值

无法添加外键约束 - Laravel 迁移错误

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