2016-04-05 17 views
0

私はSymfony2とPHPを初めて使いましたが、私は自分のやり方を学んでいます。ショッピングカートをクリアする方法

シンプルなショッピングカートを作成しました。 「購入」をクリックすると、データベース内の項目がfalseからtrueに変わるので、カート内の項目をクリアして、効果的にそのカートを無効にします(どのカートがアクティブで、どのカートがアクティブでないかが示されます)。

私のコードは何をしていないのですか?買い物をクリックすると(アイテムはそこに残っています)、私のDBに私のフィールドは変わりません。

本当にありがとうございました。

/** 
    * Displays the products bought from products 'added to cart' 
    * 
    * @Route("/bought", name="product_bought") 
    * @Method("GET") 
    * @Template() 
    */ 
    public function boughtAction(Request $request) { 

     $em = $this->getDoctrine()->getManager(); 

     $user = $this->getUser(); 

     $cart = $em->getRepository('ShopBundle:UserCart')->findOneBy(['user' => $this->getUser()]); 

     $totalCostOfAllProducts = 0; 

      $cart->getSubmitted(); //it's false 
      var_dump($cart->getSubmitted()); 
      $cart->setSubmitted(true); 
     $sub = $cart->getSubmitted(); //it's true 

     if ($sub == true) { 
      $cart = null; 
     } 
     // var_dump($cart); 
     var_dump($sub); 

     return array(
      'user' => $user, 
      'quantity' => $cart->getQuantities(), 
      'totalCostOfAllProducts' => $totalCostOfAllProducts, 
     ); 
    } 

答えて

0

変更をデータベースに保存していないようです。現時点では、 - > getSubmitted()を2回目に呼び出すときの値は、最初に呼び出したときと同じになります。あなたが次のことを行う必要があり、あなたが更新されるエンティティに加えた変更については

$em->persist($cart); 

これは、これがすべてを更新することに変更

$em->flush(); 

を持つものとして実体をマークしますあなたのデータベースに永続化されているエンティティと、2回目にtrueを設定する必要があるときに - > getSubmitted()を呼び出すと、

これらの行を追加すると問題が解決するはずです。

+0

'$ cart- null;の後に' $ em-> persist($ cart);と 'flush()'を入れます。エラーメッセージ "persistをnullにすることはできません"が表示されます。 – Ale

関連する問題