0

To create a shopping cart, I would like to add the same product only once to my Laravel session. I have tried this condition within my controller, but it's still not working. Any ideas?

Controller

$sessions = Session::get('items.item');
foreach ($sessions as $session) {
    if ($request->name == $session['name']) {
        return;
    } else {
        Session::push('items.item', [
            'name' => $request->name,
        ]);
    }
}

dd($sessions)

Karl Hill
  • 12,937
  • 5
  • 58
  • 95
yassine j
  • 495
  • 1
  • 11
  • 27

1 Answers1

3

Your code will add the item immediately if the first item it finds does not have the same name. You have to check all items before adding the new one.

$sessions = Session::get('items.item');
    
$inItems = false;
foreach ($sessions as $session) {
    if ($request->name == $session['name']) {
        $inItems = true;
        break;
    }
}
    
if (!$inItems) {
    Session::push('items.item',[
        'name' =>  $request->name,
    ]);
}
Community
  • 1
  • 1
Jerodev
  • 32,252
  • 11
  • 87
  • 108