Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 会话symfony中的持久化阵列存储_Arrays_Symfony - Fatal编程技术网

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