Эквивалент Hibernate DiscriminatorValue в Doctrine 2

У меня есть вопрос. Я ждал аннотации DiscriminatorColumn в Doctrine 2, но теперь, когда я получил ее через Update of Doctrine, я не могу найти Hibernate. Эквивалент аннотации DiscriminatorValue в Doctrine. К вашему сведению, моя версия Doctrine — «doctrine/orm»: «^2.5.6» и «doctrine/doctrine-bundle»: «~1.6», но я не могу найти такую ​​аннотацию.

Мое основное желание здесь — установить значение столбца дискриминатора для каждого дочернего класса, а не в основном классе в DiscriminatorMap.


person Momchil Milev    schedule 10.08.2017    source источник
comment
Я решил это для себя некоторое время назад. Прочтите: stackoverflow.com/questions/45015356/. Не совсем уверен, что вы имеете в виду под спящим режимом? ...   -  person rkeet    schedule 10.08.2017
comment
Ну, я имею в виду ORM Java Hibernate — hibernate.org :)   -  person Momchil Milev    schedule 11.08.2017


Ответы (1)


Как сказано в моем комментарии, у меня тоже была эта проблема некоторое время назад, когда я хотел «объявить» новые записи DiscriminatorMap в дочерних классах. Короткий ответ: вообще не объявлять карту. Доктрина позаботится об этом.

Прочтите мой полный ответ. Это работает для меня, используя Наследование таблицы классов (CTI), в документах указано, что оно должно работать одинаково для Наследование одной таблицы (STI).

Базовая настройка кода, позволяющая Doctrine справиться с этим за вас:

<?php
namespace My\Namespace\Entity;

/**
 * @Entity
 * @InheritanceType("JOINED")
 * @DiscriminatorColumn(name="discr", type="string")
 * // NOTE: No DiscriminatorMap!!!
 */
class Person
{
    // ...
}


<?php
namespace My\Other\Namespace\Entity;

/** @Entity */
class Employee extends \My\Namespace\Entity\Person
{
    // ...
}
person rkeet    schedule 10.08.2017