2017-07-05 106 views
0

自從我阻止將訂單中的項目保存到數據庫會話以來,已經有好幾天了。在會話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的#堅持()預計參數1是給定的實體對象,數組」

該訂單是持續的,但不是項目。

感謝

回答

0

我無法理解這兩條線

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

$車是一個數組,應該是一個實體,是不是?

的堅持等待一個實體, 也許你可以在foreach循環中堅持:

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

或使用doctrineCollection不是數組的

+0

是$車是包含列表中的數組訂單的文章。它不符合foreach。 – chk35

+0

如果文章是它應該工作的學說實體。什麼是錯誤信息?如果你在'foreach'的第一行添加'var_dump($ article)',你會看到什麼?你看到教義實體嗎? – fxlacroix

+0

如果我做了var_dump什麼都沒有出現,我仍然有symfony錯誤:EntityManager#persist()期望參數1是一個實體對象,給定的數組。 – chk35