0
votes

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)

1
What does dd($sessions) look like?senty
Thank you for your interest, i updated post for youyassine j

1 Answers

3
votes

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,
    ]);
}