1

スーパークラス マッピングが Doctrine2 でどのように機能するかを理解しようとしています。使用する例がいくつかありますが、xml マッピングを使用してエンティティを作成し、次にデータベース スキーマを作成しています。「extends」パラメーターを「entity」タグに示した例を 1 つ見つけましたが、現在のスキーマではサポートされていないようです。

どのクラスがマップされたスーパークラスを拡張する必要があるかを XML ドライバーに伝えるにはどうすればよいでしょうか?

SW

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>

次に、Entity クラスでこの Mapped Superclass を拡張します。Mapped Superclass を拡張する Entity クラスを作成し、さらに別の Mapped Superclass を拡張することもできます。

要点: Doctrine は、クラスの継承に基づいてマッピング メタデータの完全なセットを決定するために、すべての XML マッピング ファイルをトラバースするほどスマートです。XML でグラフを指定する必要はありません。

于 2015-01-07T19:19:48.200 に答える