Skip to content
Advertisement

Symfony for PHP: inserting multiple rows to table from session using foreach

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 .

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement