在会话symfony中保留数组存储

时间:2017-07-05 12:56:00

标签: arrays symfony

自从我阻止将订单中的商品持续到会话到数据库之后的几天。

我在数组中的会话中存储文章,我不知道如何持久化数组。我尝试将数组转换为对象,我不能。这是我的服务:

 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是实体对象,给定数组。"

订单是持久的,但不是商品。

由于

1 个答案:

答案 0 :(得分:0)

我无法理解这两行

$cart = $sessionCart->get('cart');
$cart[] = $article;
$sessionCart->set('cart', $cart);

$ cart是一个数组,应该是一个实体不是吗?

坚持等待实体, 也许你可以坚持一个foreach循环:

foreach($articles as $article){
    $em->persist($article);
}

或使用doctrineCollection而不是数组