スーパークラス マッピングが Doctrine2 でどのように機能するかを理解しようとしています。使用する例がいくつかありますが、xml マッピングを使用してエンティティを作成し、次にデータベース スキーマを作成しています。「extends」パラメーターを「entity」タグに示した例を 1 つ見つけましたが、現在のスキーマではサポートされていないようです。
どのクラスがマップされたスーパークラスを拡張する必要があるかを XML ドライバーに伝えるにはどうすればよいでしょうか?
SW
スーパークラス マッピングが Doctrine2 でどのように機能するかを理解しようとしています。使用する例がいくつかありますが、xml マッピングを使用してエンティティを作成し、次にデータベース スキーマを作成しています。「extends」パラメーターを「entity」タグに示した例を 1 つ見つけましたが、現在のスキーマではサポートされていないようです。
どのクラスがマップされたスーパークラスを拡張する必要があるかを XML ドライバーに伝えるにはどうすればよいでしょうか?
SW
どのクラスがマッピングされたスーパークラスを拡張する必要があるかを 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 でグラフを指定する必要はありません。