【问题标题】:Symfony for PHP: inserting multiple rows to table from session using foreachSymfony for PHP:使用 foreach 从会话向表中插入多行
【发布时间】:2020-12-01 16:42:32
【问题描述】:

我正在编写一个函数来插入一个包含订单项目的新订单。这些项目存储在会话中。我需要使用 Symfony for PHP 将所有项目插入到 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();

但它只将最后一项插入到我的订单项表中。我应该进行哪些代码更改?如果您需要更多详细信息,请告诉我。

【问题讨论】:

  • 每次迭代都会创建一个新条目,但只有在循环完成后才会持续存在。你期望会发生什么?如果要存储这些项目中的每一个,请将它们保留在循环中,并且仅在循环结束时刷新。

标签: php mysql symfony doctrine shopping-cart


【解决方案1】:

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

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

【讨论】:

  • 知道了!非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-14
  • 2010-12-21
  • 2019-07-15
  • 2022-10-24
  • 2012-01-29
  • 1970-01-01
相关资源
最近更新 更多