1

我试图弄清楚超类映射在 Doctrine2 中是如何工作的,并且我有一些示例可以使用,但我一直在使用 xml 映射来创建我的实体,然后依次创建数据库模式。我找到了一个示例,该示例显示了“实体”标签的“扩展”参数,但当前模式似乎不支持它。

您如何告诉 XML 驱动程序哪些类应该扩展映射的超类?

西南

4

1 回答 1

0

您如何告诉 XML 驱动程序哪些类应该扩展映射的超类?

你不必:)

您可以简单地创建一个抽象类(让我们为其命名My\First\BaseClass)并在 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="My\First\BaseClass">

        <!-- fields, etc -->

    </mapped-superclass>

</doctrine-mapping>

接下来有一个实体类扩展这个映射超类。您甚至可以让实体类扩展映射超类,进而扩展另一个映射超类。

关键是:Doctrine 足够聪明,可以遍历所有 XML 映射文件,以便根据类继承确定完整的映射元数据集。您无需在 XML 中指定图形。

于 2015-01-07T19:19:48.200 回答