我找到了
following example in the doctrine documentation,他们已经添加了映射到特征:
/** * Trait class */ trait ExampleTrait { /** @Id @Column(type="string") */ private $id; /** * @Column(name="trait_foo",type="integer",length=100,nullable=true,unique=true) */ protected $foo; /** * @OneToOne(targetEntity="Bar",cascade={"persist","merge"}) * @JoinColumn(name="example_trait_bar_id",referencedColumnName="id") */ protected $bar; }
我试图映射一个特征,而不必复制继承它的类中的映射.我没有诚实地尝试过这个,因为我当前的项目使用yaml进行映射,但看起来普通的PHP类在使用特性时也会继承映射.
有没有办法继承这个特征的映射而不使用关联,而是使用yaml或xml?我尝试将特性设置为mapped superclass,但它没有用,但我基本上都在寻找相同类型的想法.
谢谢.
使用YAML声明mappedSupperClass:
Namespace\For\Your\MappingClass: type: mappedSuperclass fields: id: id: type: integer generator: strategy: AUTO ... other fields and relations
用XML声明它:
<?xml version="1.0" encoding="UTF-8"?> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> <mapped-superclass name="Namespace\For\Your\MappingClass"> <field name="foo" column="foo" type="string" length="255" /> <field name="bar" column="bar" type="string" length="255" unique="true" /> ... other fields </mapped-superclass> </doctrine-mapping>
如果您运行app / console doctrine:generate:entities,您将能够在其他实体中使用mappedSuperClass作为优势.