I’m writing a function to insert a new order with order items in it. Those items are stored in session. I need to insert all the items to order items table using Symfony for PHP.
Here what I tried:
$cart = $session->get('cart', []);
foreach($cart as $shoesid => $sizes) {
    foreach ($sizes as $sizeid => $quantity) {
        $oishoe = $this->shoesRepository->findOneBy([
            'shoesid' => $shoesid
        ]);
        $oisize = $this->sizesRepository->findOneBy([
            'sizeid' => $sizeid
        ]);
        $oi = new Orderitems();
        $oi->setOrderid($order);
        $oi->setShoesid($oishoe);
        $oi->setQuantity($quantity);
        $oi->setSizeid($oisize);
    }
}
$manager->persist($oi);
$manager->flush();
But it inserts only the last item to my order items table. What code changes should I make? If you need more details, please let me know.
Advertisement
Answer
I think you should leave $manager->persist($oi) in the foreach loop otherwise you only persist the last value.
Leave $manager->flush() outside the loop .