原则 2:有没有办法使用 yaml 或 xml 从 trait 继承映射?

Posted

技术标签:

【中文标题】原则 2:有没有办法使用 yaml 或 xml 从 trait 继承映射?【英文标题】:Doctrine 2: Is there a way to inherit mapping from a trait using yaml or xml? 【发布时间】:2014-12-09 13:22:50 【问题描述】:

我找到了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 类在使用 trait 时也会继承映射。

有没有办法在不使用关联但使用 yaml 或 xml 的情况下继承此 trait 的映射?我尝试将 trait 设置为 mapped superclass,但没有成功,但我基本上是在寻找相同类型的想法。

谢谢。

【问题讨论】:

开箱即用。你只是忘记了@MappedSuperclass 注释。 【参考方案1】:

使用 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 作为升序。

【讨论】:

以上是关于原则 2:有没有办法使用 yaml 或 xml 从 trait 继承映射?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法从 python 代码中获取值到 YAML 文件中

如何使用 XML 或 YAML 而非注解映射来定义 Doctrine mappedSuperclass

Git 日志输出到 XML、JSON 还是 YAML?

有没有办法区分 TextViews 或具有相同 ID 多次从单个 xml 文件膨胀的任何其他视图

如何 YAML 保存 numpy 数组

Python处理yaml和嵌套数据结构的一些技巧