【发布时间】:2021-06-08 16:09:22
【问题描述】:
我正在开发一个 Sylius 应用程序并想要修改实体的属性。
更具体地说:我想要实现的是使ProductVariant.onHand(或实际上是数据库中的相应列)nullable。
Sylius 的文档提供了一篇吉祥的文章“Customizing Models”。但它没有描述如何更改现有属性的定义。
如何修改 Sylius(核心)实体的属性,例如 ProductVariant.onHand?
到目前为止我尝试了什么:我扩展了 Sylius\Component\Core\Model\ProductVariant 并向 onHand 属性添加了 Doctrine 注释:
/**
* @ORM\Entity
* @ORM\Table(name="sylius_product_variant")
*/
class ProductVariant extends BaseProductVariant
{
...
/**
* ...
* @ORM\Column(type="integer", nullable=true)
*/
protected $onHand = 0;
...
}
嗯,extend上课绝对是正确的一步。它也正常工作:
$ bin/console debug:container --parameter=sylius.model.product_variant.class
------------------------------------ -----------------------------------
Parameter Value
------------------------------------ -----------------------------------
sylius.model.product_variant.class App\Entity\Product\ProductVariant
------------------------------------ -----------------------------------
但是天真的添加属性定义导致了一个错误:
$ ./bin/console doctrine:schema:validate
Property "onHand" in "App\Entity\Product\ProductVariant" was already declared, but it must be declared only once
【问题讨论】:
-
doctrine-project.org/projects/doctrine-orm/en/2.8/tutorials/… 编辑:我不建议将其设为可空,它可能会破坏应用程序。
标签: symfony model doctrine entity sylius