我是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,
);
}
答案 0 :(得分:0)
看起来你没有持久化并刷新对数据库的更改。当你调用的值 - > gt; getSubmitted()时,第二次仍然与你第一次调用时的值相同。
对于您要更新的实体所做的更改,您需要执行以下操作:
$em->persist($cart);
这会将实体标记为对其进行更改
$em->flush();
这将更新数据库中持久存在的所有实体,并在第二次调用时更新 - > gt; getSubmitted()。
添加这些行应解决问题。