Arrays 会话symfony中的持久化阵列存储
我已经有好几天没有阻止将项目从订单持久化到会话到数据库 我将会话中的文章存储在一个数组中,但我不知道如何持久化该数组。我试图将数组转换成一个对象,但我不能。这是我的服务:Arrays 会话symfony中的持久化阵列存储,arrays,symfony,Arrays,Symfony,我已经有好几天没有阻止将项目从订单持久化到会话到数据库 我将会话中的文章存储在一个数组中,但我不知道如何持久化该数组。我试图将数组转换成一个对象,但我不能。这是我的服务: public function addArticle($id) { $sessionCart = $this->session; $article = $this->doctrine->getRepository('AppBundle:Article')->find($id);
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是给定数组的实体对象。”
订单是持久化的,但项目不是
谢谢这两行我听不懂
$cart = $sessionCart->get('cart');
$cart[] = $article;
$sessionCart->set('cart', $cart);
$cart是一个数组,应该是一个实体,不是吗
持久化正在等待一个实体,
也许您可以在foreach循环中保持:
foreach($articles as $article){
$em->persist($article);
}
或者使用doctrineCollection而不是数组Yes$cart是一个包含订单物品列表的数组。它不适用于foreach。如果文章是一个条令实体,它应该工作。错误消息是什么?如果你
var\u dump($article),你会看到什么代码>在foreach的第一行?你看到doctrineEntity了吗?如果我做了一个var_dump,没有显示任何内容,我仍然有symfony错误:EntityManager#persist()期望参数1是一个实体对象,数组给定。