自从我阻止将订单中的商品持续到会话到数据库之后的几天。
我在数组中的会话中存储文章,我不知道如何持久化数组。我尝试将数组转换为对象,我不能。这是我的服务:
public function addArticle($id)
{
$sessionCart = $this->session;
$article = $this->doctrine->getRepository('AppBundle:Article')->find($id);
$cart = $sessionCart->get('cart');
$cart[] = $article;
$sessionCart->set('cart', $cart);
// use later for delivery
$sessionCart->get('commande');
return $sessionCart;
}
public function panier()
{
$articles = $this->session->get('cart');
return $articles;
}
public function delivery(Request $request)
{
$commande = new Commande();
$articles = $this->session->get('cart');
$form = $this->form->create(CommandeType::class, $commande);
if ($request->isMethod('POST') && $form->handleRequest($request)->isValid())
{
$data = $form->getData();
$this->session->set('commande', $data);
$response = new RedirectResponse('payment');
$response->send();
}
return [$form, $articles];
}
public function payment(Request $request)
{
$articles = $this->session->get('cart');
$commande = $this->session->get('commande');
if ($request->isMethod('POST')) {
$em = $this->doctrine;
$em->persist($articles);
$em->persist($commande);
$em->flush();
}
return[$articles, $commande];
}
错误:" EntityManager#persist()期望参数1是实体对象,给定数组。"
订单是持久的,但不是商品。
由于
答案 0 :(得分:0)
我无法理解这两行
$cart = $sessionCart->get('cart');
$cart[] = $article;
$sessionCart->set('cart', $cart);
$ cart是一个数组,应该是一个实体不是吗?
坚持等待实体, 也许你可以坚持一个foreach循环:
foreach($articles as $article){
$em->persist($article);
}
或使用doctrineCollection而不是数组