我正在研究Sylius 1.2.8
。我已经覆盖了产品模型,并且可以正常工作,但是当我添加具有以下属性的新产品时:
<?php
...
$em = $this->container->get('sylius.manager.product');
/**
* @var \Sylius\Component\Product\Model\ProductAttributeValueInterface $attribute
* @var \Sylius\Component\Core\Model\ProductInterface $product
*/
$product->addAttribute($attribute);
$em->persist($product);
$em->flush();
它抛出此错误:
执行“ INSERT INTO”时发生异常 sylius_product_attribute_value(语言代码,文本值, 布尔值,整数值,浮点值,日期时间值,日期值, json_value,product_id,attribute_id)值(?,?,?,?,?,?,?,?, ?,?)'和params [“ en_US”,null,null,null,null,null,null, “ [\” 013ea12a-1aff-4050-8107-20b53ada73ce \“]”,为空,28]:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'product_id' cannot be null
我的自定义产品模型如下:
namespace AppBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Sylius\Component\Core\Model\Product as BaseProduct;
class Product extends BaseProduct implements ProductInterface
{
public function __construct()
{
parent::__construct();
}
}
我的配置文件:
sylius_product:
driver: doctrine/orm
resources:
product:
classes:
repository: AppBundle\Doctrine\ORM\ProductRepository
model: AppBundle\Entity\Product
我发现了一个类似的问题:stackoverflow.com/q/22919004/6248367。但这并不能解决我的问题,也无法回答应用程序失败的原因。这个答案也是4岁。有人可以帮我解决这个问题吗?
编辑:每当我创建新产品并同时向其添加属性时,也会在admin中引发此错误。解决方法是先创建产品,然后添加属性。
答案 0 :(得分:0)
我已经解决了问题。正如@czende所述,请正确检查配置。
在我的情况下,我在覆盖subject
时在attribute
中设置了错误的类:
sylius_product:
driver: doctrine/orm
resources:
product:
classes:
repository: AppBundle\Doctrine\ORM\ProductRepository
model: AppBundle\Entity\Product
sylius_attribute:
driver: doctrine/orm
resources:
product:
# Make sure to provide the correct Product class in the subject.
subject: AppBundle\Entity\Product
attribute:
classes:
model: AppBundle\Entity\ProductAttribute
repository: AppBundle\Doctrine\ORM\ProductAttributeRepository
还要确保在映射配置中使用mappedSuperclass
,而不是commented的Michał Marcinkowski来将entity
用作#3997
AppBundle\Entity\ProductAttribute:
type: mappedSuperclass
table: sylius_product_attribute
编辑:要调试错误,请首先在symfony warnings
中选中debug bar
。它可以缩小搜索范围以查找错误。我还可以提示您配置文件中是否有问题。