我正在建立一家网上商店(大学项目),现在我在购物车方面遇到了问题, 所以我做了两个实体 ShopCart:
/**
* @ORM\Entity(repositoryClass="App\Repository\ShopCartRepository")
*/
class ShopCart
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="App\Entity\ShopCartItem", mappedBy="shopCart")
*/
private $items;
/**
* @ORM\Column(type="decimal", precision=6, scale=3)
*/
private $totalPrice = 0;
/**
* @ORM\Column(type="integer")
*/
private $itemsTotal = 0;
和ShopCartItem
/**
* @ORM\Entity(repositoryClass="App\Repository\ShopCartItemRepository")
*/
class ShopCartItem
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="integer")
*/
private $quantity;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\ShopProduct", inversedBy="shopCartItems")
* @ORM\JoinColumn(nullable=false)
*/
private $product;
/**
* @ORM\Column(type="decimal", precision=7, scale=2)
*/
private $totalPrice;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\ShopCart", inversedBy="items")
*/
private $shopCart;
现在我将其存储在会话shopId中(这是ShopCart ID) 当我添加项目时,实体和整体认为正常工作,但之后 将ID设置为会话,如下所示: $ request-> getSession()-> set(“ shopId”,$ data-> getId()); 当我增加流程(添加新的ItemToShop)时 在会话shopId中,设置它后不存在,我应该怎么做? 将商品添加到购物车的方法
/** @var ShopCart $data */
$data = $this->getCartById($request);
// dump($request->getSession()->has("shopId"));
/** @var ShopProduct $product */
$product = $this->getDoctrine()->getRepository(ShopProduct::class)->find(1);
$em = $this->getDoctrine()->getEntityManager();
$data->addItem($product, $em);
$em->persist($data);
$em->flush();
// dump($data->getId());
$request->getSession()->set("shopId", $data->getId());
$request->getSession()->save();
dump($request->getSession()->get("shopId"));