我有一个实体Test
,它将从特征中获取其属性(和基本方法):
class Test {
use Trait_title;
}
trait Trait_title{
/**
* @ORM\Column(type="string", length=255, nullable=false)
*/
private $title;
}
这是正常的。但是当我尝试将注释放在Test Class
语句前面的use
时,部分或完整,当我尝试更新模式时,symfony会忽略它们:
class Test {
/**
* @ORM\Column(type="string", length=255, nullable=false) //will be ignored...
*/
use Trait_title;
}
trait Trait_title {
private $title;
}
这样做的目的是将教条注释的默认值移动到特征中,但也允许为每个实体设置一些自定义注释,如nullable
。
答案 0 :(得分:2)
您正在寻找的是地图覆盖。
您应该查看Doctrine官方文档来实现此目的: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/override-field-association-mappings-in-subclasses.html
还有一个完全针对您的用例的示例,它会覆盖特征映射信息。
有时候,覆盖的映射来自使用特征的实体,其中特征具有映射元数据。本教程将介绍如何覆盖映射元数据,特别是属性和关联元数据。
第二种方法是通过重新定义映射信息来覆盖trait属性。 有关此解决方案的详细信息,请参阅此答案: https://stackoverflow.com/a/11939306/4829152