jcr*_*oll 7 php doctrine symfony doctrine-orm
我在doctrine文档中找到了以下示例,它们已将映射添加到特征:
/**
* 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;
}
Run Code Online (Sandbox Code Playgroud)
我试图映射一个特征,而不必复制继承它的类中的映射.我没有诚实地尝试过这个,因为我当前的项目使用yaml进行映射,但看起来普通的php类在使用特性时也会继承映射.
有没有办法继承这个特征的映射而不使用关联,而是使用yaml或xml?我尝试将特征设置为映射的超类,但它不起作用,但我基本上寻找相同类型的想法.
谢谢.
Grz*_*uze -1
使用 YAML 声明mappedSupperClass:
Namespace\For\Your\MappingClass:
type: mappedSuperclass
fields:
id:
id:
type: integer
generator:
strategy: AUTO
... other fields and relations
Run Code Online (Sandbox Code Playgroud)
用 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>
Run Code Online (Sandbox Code Playgroud)
如果你运行,app/console doctrine:generate:entities
你将能够使用mappedSuperClass作为其他实体中的上升。
归档时间: |
|
查看次数: |
885 次 |
最近记录: |