2017-07-05 8 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); 

$カートが配列され、これらの2行を理解することはできませんし、このエンティティがないことでしょうか?ザ・が持続

は、多分あなたは、foreachループに固執することができ 、エンティティを待っている:

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

またはその代わりに、配列

+0

はい$カートのdoctrineCollectionを使用するには、リストを含む配列であります注文商品のforeachでは動作しません。 – chk35

+0

記事が教義の実体であればそれはうまくいくはずです。エラーメッセージは何ですか?あなたがforeachの最初の行に 'var_dump($ article);'を書かれているとどうなっていますか? doctrineEntityが見えますか? – fxlacroix

+0

私はvar_dumpを実行しても何も表示されませんが、私はまだsymfonyのエラーがあります:EntityManager#persist()は、パラメータ1が与えられた配列のエンティティオブジェクトになることを期待しています。 – chk35

関連する問題