Search code examples
phplaravellaravel-session

Unique data input to Laravel session


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)


Solution

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