如何清除购物车的PHP

时间:2016-04-05 17:09:11

标签: php symfony

我是Symfony2和PHP的新手,但我正在学习自己的方式。

我创建了一个简单的购物车。在他们点击“购买”后我希望清除购物车中的商品并有效地使购物车无效,因为我的数据库中的字段将从false变为true(显示哪些购物车处于活动状态以及哪些购物车不活动)。

为什么我的代码没有做我想做的事情?点击“购买”后,购物车仍然保持正常状态。 (项目仍在那里)在我的数据库中我的字段不会改变。

我真的很感激这方面的帮助,谢谢。

/**
     * 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,
        );
    }

1 个答案:

答案 0 :(得分:0)

看起来你没有持久化并刷新对数据库的更改。当你调用的值 - > gt; getSubmitted()时,第二次仍然与你第一次调用时的值相同。

对于您要更新的实体所做的更改,您需要执行以下操作:

$em->persist($cart);

这会将实体标记为对其进行更改

$em->flush();

这将更新数据库中持久存在的所有实体,并在第二次调用时更新 - > gt; getSubmitted()。

添加这些行应解决问题。