user6104636
user6104636

Reputation: 83

Debugging foreach

I know this is a dump/basic question but I'm stuck and could use some help being a newbie.

What I'm Trying to Achieve: I want to have a foreach loop to get all of the product names in my users cart.

Problem: The foreach loop stops after the second iteration (if there are three things in the cart and I dump, only 2 are shown(the first and second)).

I know what a foreach loop does. I think my problem lays in my variable names but I tried messin around with them to no avail.

if (is_null($cart) || $cart->getSubmitted(true)) {
    $cart = new UserCart();
    //  since new cart no need to check for duplicate product quantity
    //  add product to cart
        $this->addFlash('notice', 'Creating a new cart because one didnt exist for the user before.');
}
else {

    $quantity = new Quantity();

    //If the cart is set

    $getProductsInCurrentUsersCart = $cart->getQuantities(); //All Products In Users Cart (ARRAY COLLECTION/PERSITENT COLLECTION)

    foreach ($getProductsInCurrentUsersCart as $key => $value) {

        dump($getProductsInCurrentUsersCart);
        $getProductsInCurrentUsersCart = $value->getProduct()->getName(); //SHOULD BE ALL PRODUCTS IN CART

        if ($getProductsInCurrentUsersCart === $quantity->setProduct($productBeingAddedToCart)->getProduct()->getName()) {
            $this->addFlash('notice', 'Comparission was TRUE.');
            $quantity->setQuantity($quantity->getQuantity() + 1);
        } 
        else {
            $quantity->setQuantity(1);
            $quantity->setProduct($productBeingAddedToCart);
            $this->addFlash('notice', 'Comparisson was FALSE.');
        } //ENDS IF/ELSE

    } //EXECUTING ONCE??????????


    $cart->setTimestamp(new \DateTime()); // Set Time Product was Added
    // $quantity->setQuantity(1);   // Set Quantity Purchased
    $cart->setSubmitted(false); // Set Submitted
    $cart->setUser($this->getUser());  // Sets the User ONCE
    $cart->addQuantity($quantity);    //  Add Quantity ONCE
    $quantity->setUserCart($cart);   //   Create a UserCart ONCE                
    $em->persist($productBeingAddedToCart);
    $em->persist($cart);
    $em->persist($quantity);
    $em->flush();
    $this->addFlash('notice', 'The product: '.$productBeingAddedToCart->getName().' has been added to the cart!');
}

Any help is really appreciated!

Upvotes: 1

Views: 196

Answers (1)

Snowman
Snowman

Reputation: 1543

$getProductsInCurrentUsersCart = $value->getProduct()->getName(); 

Here you are redefining the list variable inside the loop. Try with $getProductsInCurrentUsersCart2 and also change it below this line. See if that solves it or not. Then come up with a better name :)

Upvotes: 1

Related Questions