Сессия в Laravel - PullRequest
       8

Сессия в Laravel

0 голосов
/ 30 мая 2018
class ControlController extends Controller
{
    public function anyadirCarrito($id, $quan) {
        $productoCarrito = (object)array(
            'id' =>$id,
            'cantidad' => $quan,
        );
        \Session::push('cart', $productoCarrito);
        return \Session::get('cart');
    }
}

Я пытаюсь вызвать эту функцию для хранения данных, но каждый раз, когда я вызываю ее, она перезаписывает данные, я хочу, чтобы она сохранялась рядом с другой, но перезаписывала ее.Как я могу сохранить его с другим?И если я дам ему идентификатор, как я могу его стереть?

1 Ответ

0 голосов
/ 30 мая 2018

Laravel Session работает на основе ключ / значение.Поэтому, когда вы push добавляете другой элемент к клавише cart, вы перезаписываете тот же ключ, к которому вы добавили предыдущее значение.

Если вы хотите сохранить cart со всеми продуктамиВы добавили, вам сначала нужно получить значение и добавить новый продукт.Например:

public function addProduct($id, $quantity) {
    // Get cart from session
    $cart = session('cart', []);

    // Increment existing product quantity, or add product to cart
    if (array_key_exists($id, $cart)) {
        $cart[$id]->quantity += $quantity;
    } else {
        $cart[$id] = (object) compact('id', 'quantity');
    }

    // Set cart in session
    session(compact('cart'));

    return $cart;
}

public function removeProduct($id) {
    // Get cart from session
    $cart = session('cart', []);

    // Remove product from cart
    unset($cart[$id]);

    // Set cart in session
    session(compact('cart'));

    return $cart;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...