我在 Doctrine 和 Nette 框架中编写购物车程序。有addItem
方法:(添加到会话购物车)
public function addItem($item) {
$cart = $this->getCartSection();
$product = $this->product_facade->getProduct($item['voucher_id']);
if (isset($cart->cart_items[$product->getId()])) {
$cart->cart_items[$product->getId()]['amount'] += $item['amount'];
} else {
$cart->cart_items[$product->getId()] = array(
'voucher' => $product,
'amount' => $item['amount']
);
}
}
还有一种添加订单到数据库的方法
public function add($creator, $data) {
$order = new Orders();
$order->setPrice($data['price']);
$order->setStatus($this->status_facade->getStatus(self::NEW_STATUS_ID));
$order->setPayment($this->payment_facade->getPayment($data->payment));
$order->setDate(new DateTime());
$order->setUser($creator);
foreach ($data['cart'] as $item) {
$order_product = new OrdersProduct();
$order_product->setQuantity($item['amount']);
$order_product->setProduct($item['voucher']);
$order->addItem($order_product);
}
$this->em->persist($order);
$this->em->flush();
}
单击“添加到订单”按钮后出现错误
Undefined index: 00000000659576f8000000004032b93e
但我知道哪里出错了。有一个方法add
,该方法从会话中获取 Product 实体。
$order_product->setProduct($item['voucher']);
我需要会话中的产品实体,因为我想计算购物车中的总价。setProduct
如果我用数字或$item['voucher']->getId()
(这个变量是来自的实体Product
)调用 add 方法
$order_product->setProduct(
$this->product_facade->getProduct(4)
);
没关系,但我不知道,为什么我从会话中调用产品实体是错误的。这是相同的方法具有相同的结果。
你能帮我解决问题吗?你知道为什么会出错吗?
谢谢你,希望你能理解我。