我正在努力覆盖产品,我不确定它是否是一个bug。 覆盖正常工作但是当我要在Sylius后端创建一个新产品时,我会得到以下异常:
An exception occurred while executing 'INSERT INTO sylius_variant
(is_master, presentation, available_on, created_at, updated_at, deleted_at,
sku, price, on_hold, on_hand, available_on_demand, width, height, depth, weight,
product_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'
with params [1, null, "2014-04-07 18:43:00", "2014-04-07 19:12:25",
"2014-04-07 19:12:25", null, null, 10000, 0, 0, 1, null, null, null, null, null]:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'product_id' cannot be null
我的代码如下:
<?php
namespace Acme\ShopBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Sylius\Bundle\CoreBundle\Model\Product as BaseProduct;
use Doctrine\Common\Collections\ArrayCollection;
use Sylius\Bundle\CoreBundle\Model\Variant;
/**
* @ORM\Entity()
* @ORM\Table(name="sylius_product")
*/
class Product extends BaseProduct
{
public function __construct() {
parent::__construct();
}
}
sylius.yml:
sylius_product:
classes:
product:
model: Acme\ShopBundle\Entity\Product
controller: Sylius\Bundle\CoreBundle\Controller\ProductController
repository: Sylius\Bundle\CoreBundle\Repository\ProductRepository
form: Acme\ShopBundle\Form\Type\ProductType
有人知道我是否遗漏了什么?
谢谢, 大卫
答案 0 :(得分:0)
只需使用以下代码替换产品型号的构造()。它会正常工作。
use Doctrine\Common\Collections\ArrayCollection;
class Product extends BaseProduct
{
public function __construct() {
$this->availableOn = new \DateTime();
$this->properties = new ArrayCollection();
$this->createdAt = new \DateTime();
$this->variants = new ArrayCollection();
$this->options = new ArrayCollection();
$this->setMasterVariant(new Variant());
$this->taxons = new ArrayCollection();
$this->variantSelectionMethod = self::VARIANT_SELECTION_CHOICE;
}
}