Невозможно изменить одно значение в массиве сеанса в Laravel - PullRequest
0 голосов
/ 21 июня 2020

Это мой метод обновления для продуктов. И не могу изменить количество продукта. Данные сохраняются внутри 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 Ответ

0 голосов
/ 21 июня 2020

Я могу решить это с помощью следующего:

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;

...