提问者:小点点

交响乐/教义:特质与注释


我有一个实体Test,它将从traits中获取其属性(和基本方法):

class Test {
   use Trait_title;
}

trait Trait_title{
    /**
     * @ORM\Column(type="string", length=255, nullable=false)
     */
    private $title;
}

这是正确的。但是,当我尝试将注释放在测试类use语句前面时,当我尝试更新模式时,symfony忽略了部分注释或完整注释:

class Test {
    /**
     * @ORM\Column(type="string", length=255, nullable=false) //will be ignored...
     */
   use Trait_title;
}

trait Trait_title {
    private $title;
}

这样做的目的是将条令注释的默认值移动到trait中,但也允许设置一些自定义注释,如每个实体的nullable


共1个答案

匿名用户

您要查找的是映射覆盖。

你应该看看学说官方留档来实现这一点:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/override-field-association-mappings-in-subclasses.html

还有一个完全适合您的用例的示例,覆盖Trait映射信息。

有时,要重写的映射来自使用特征的实体,其中特征具有映射元数据。本教程解释如何覆盖映射元数据,特别是元数据的属性和关联。

第二种方法是通过重新定义映射信息来覆盖trait属性。有关此解决方案的更多详细信息,请参阅此答案:https://stackoverflow.com/a/11939306/4829152