NHANVNREC
NHANVNREC

Reputation: 29

Laravel session

I have done projects laravel shopping cart when clicking on the product detail page will open and click the add to cart sends the id to CartController @ index. I then access the database and retrieve product information and I put on the session. Then I bought other products but my older products lost in session when I turn the page. Who can help me thanks

Upvotes: 1

Views: 154

Answers (2)

NHANVNREC
NHANVNREC

Reputation: 29

this is my code for cart public function addItem($ids,Request $request){

    $data = Product::find($ids)->toArray();

    $name =$data['name'];
    $price = $data['price'];
    $cart = $request->session()->get('cart');

    if($cart==null){
        $cart['quantity'][$ids] = 1;
        $cart['price'][$ids] = $price;
        $cart['name'][$ids] = $name;
        $request->session()->put('cart', $cart);
    }else{
       if(array_key_exists($ids,$cart['quantity'])){
            $cart['quantity'][$ids] += 1;
            $cart['price'][$ids] = $price * $cart['quantity'][$ids];
             $cart['name'][$ids] = $name;
        }else{

            $cart['quantity'][$ids] = 1;
            $cart['price'][$ids] = $price;
            $cart['name'][$ids] = $name;
        }
         $request->session()->put('cart', $cart);
    }





} 

Upvotes: 1

Kamil P
Kamil P

Reputation: 784

Probably you don't add this to existed array in session, but replace it.

Should do it this way:

$products = Session::get('products', array());  // get existed products or empty array
$products[] = $newProduct;                      // add new product to list
Session::put('products', $products);            // put all products to session

Upvotes: 1

Related Questions