#php #mysql #symfony #doctrine #shopping-cart
#php #mysql #symfony #доктрина #корзина покупок
Вопрос:
Я пишу функцию для вставки нового заказа с элементами заказа в нем. Эти элементы хранятся в сеансе. Мне нужно вставить все элементы в таблицу order items, используя Symfony для PHP.
Вот что я попробовал:
$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();
Но он вставляет только последний элемент в мою таблицу элементов заказа. Какие изменения в коде я должен внести? Если вам нужна более подробная информация, пожалуйста, дайте мне знать.
Комментарии:
1. Вы создаете новую запись с каждой итерацией, но сохраняете ее только после завершения цикла. Чего вы ожидали? Если каждый из этих элементов должен быть сохранен, сохраняйте их в цикле и сбрасывайте только после завершения цикла.
Ответ №1:
Я думаю, вам следует оставить $manager->persist($oi)
в цикле foreach, иначе вы сохраняете только последнее значение.
Оставьте $manager->flush()
вне цикла.
Комментарии:
1. Понял! Большое спасибо за помощь!