我试图弄清楚超类映射在 Doctrine2 中是如何工作的,我有一些例子可以使用,但我一直在使用 xml 映射来创建我的实体,然后反过来创建数据库架构。我发现了一个示例,该示例将"extends"参数显示在"实体"标签中,但当前架构似乎不支持该参数。
如何告诉 XML 驱动程序哪些类应该扩展映射的超类?
西 南部
如何告诉 XML 驱动程序哪些类应该扩展映射的超类?
你不必:)
您可以简单地创建一个抽象类(让我们将其命名为 MyFirstBaseClass
)并在 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="MyFirstBaseClass">
<!-- fields, etc -->
</mapped-superclass>
</doctrine-mapping>
接下来,让一个实体类扩展此映射超类。您甚至可以让一个实体类扩展一个映射的超类,而映射的超类又扩展另一个映射的超类。
关键是:Doctrine 足够聪明,可以遍历所有 XML 映射文件,以便根据类继承确定完整的映射元数据集。无需在 XML 中指定图形。