2014-10-14 3 views
6

Я нашел following example in the doctrine documentation где они добавили отображение к черту:Doctrine 2: Есть ли способ наследовать отображение из признака с помощью yaml или xml?

/** 
* Trait class 
*/ 
trait ExampleTrait 
{ 
    /** @Id @Column(type="string") */ 
    private $id; 

    /** 
    * @Column(name="trait_foo", type="integer", length=100, nullable=true, unique=true) 
    */ 
    protected $foo; 

    /** 
    * @OneToOne(targetEntity="Bar", cascade={"persist", "merge"}) 
    * @JoinColumn(name="example_trait_bar_id", referencedColumnName="id") 
    */ 
    protected $bar; 
} 

Я пытаюсь отобразить черты, не дублируя отображение в классах, которые наследуют его. Я не честно пробовал это, так как мой текущий проект использует yaml для сопоставления, но похоже, что обычный PHP-класс наследует и отображение, используя этот признак.

Есть ли способ наследовать отображение этого признака без использования ассоциаций, но вместо этого использовать yaml или xml? Я попытался установить черту как mapped superclass, но это не сработало, но я в основном ищу идею того же типа.

Спасибо.

ответ

0

Объявить mappedSupperClass с YAML:

Namespace\For\Your\MappingClass: 
    type: mappedSuperclass 
    fields: 
     id: 
      id: 
       type: integer 
       generator: 
        strategy: AUTO 

     ... other fields and relations 

Чтобы объявить его с 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="Namespace\For\Your\MappingClass"> 

     <field name="foo" column="foo" type="string" length="255" /> 

     <field name="bar" column="bar" type="string" length="255" unique="true" /> 

     ... other fields 

    </mapped-superclass> 

</doctrine-mapping> 

При запуске app/console doctrine:generate:entities вы сможете использовать mappedSuperClass в качестве Асцендента в других организациях.

Смежные вопросы