我对Symfony2和PHP并不熟悉,但我正在学习我的方法。
我创造了一个简单的购物车。在他们单击'Buy‘之后,我希望清除购物车中的项目,并有效地使购物车失效,因为在我的数据库中,字段将从false变为true (这将显示哪些购物车处于活动状态,哪些没有活动)。
为什么我的代码没有做任何我希望它做的事情?在我点击'Buy‘(项目还在那里)之后,购物车仍然保持触觉,而在我的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,
);
}
发布于 2016-04-05 17:38:40
看起来,您没有对数据库的更改进行持久化和刷新。目前,第二次调用->getSubmitted()时的值仍然与第一次调用时相同。
对于要更新的实体所做的更改,您需要执行以下操作:
$em->persist($cart);
这将将该实体标记为对其进行更改。
$em->flush();
这将更新数据库中持久化的所有实体,并且在第二次调用->getSubmitted()时应该是正确的。
添加这些行可以解决这个问题。
https://stackoverflow.com/questions/36432816
复制相似问题