symfonyforphp:使用foreach从会话向表中插入多行

symfonyforphp:使用foreach从会话向表中插入多行,php,mysql,symfony,doctrine,shopping-cart,Php,Mysql,Symfony,Doctrine,Shopping Cart,我正在编写一个函数来插入一个包含订单项的新订单。这些项目存储在会话中。我需要使用Symfony for PHP插入所有items to order items表 以下是我所尝试的: $cart = $session->get('cart', []); foreach($cart as $shoesid => $sizes) { foreach ($sizes as $sizeid => $quantity) { $oishoe = $this->s

我正在编写一个函数来插入一个包含订单项的新订单。这些项目存储在会话中。我需要使用Symfony for PHP插入所有items to order items表

以下是我所尝试的:

$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();
但它只将最后一个项目插入到我的订单项目表中。我应该做哪些代码更改?如果您需要更多详细信息,请告诉我。

我认为您应该将$manager->persist$oi保留在foreach循环中,否则您只能保留最后一个值


将$manager->flush留在循环之外。

每次迭代都会创建一个新条目,但只有循环完成后才能继续。你以为会发生什么?如果要存储这些项中的每一项,请将它们保存在循环中,并仅在循环结束时刷新。明白了!非常感谢你的帮助!