Я пытаюсь выяснить, как работает отображение суперкласса в Doctrine2, и у меня есть несколько примеров для работы, но я использовал отображение xml для создания своих сущностей, а затем, в свою очередь, схемы базы данных. Я нашел один пример, который показал параметр ‘extends’ для тега ‘entity’, но он не поддерживается в текущей схеме.
Как вы говорите драйверу 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 расширяет этот сопоставленный суперкласс. Вы даже можете иметь класс Entity, расширяющий Mapped Superclass, который, в свою очередь, расширяет еще один Mapped Superclass.
Дело в том, что Doctrine достаточно умен, чтобы обойти все файлы сопоставления XML, чтобы определить полный набор метаданных сопоставления на основе наследования классов. Вам не нужно указывать график в XML.
Других решений пока нет …