Так что я работаю над интеграцией Symfony 3 в унаследованную кодовую базу, и по большей части все хорошо.К сожалению, у меня возникли некоторые проблемы с наследованием одной таблицы со странным дискриминатором.ПРИМЕЧАНИЕ: я не могу изменить схему (по крайней мере, в ближайшее время), потому что она связана с большим количеством старого кода.
У меня есть классическое сопоставление Person -> Employee.При этом у меня есть 2 таблицы:
, которые переводятся в 3 объекта
Это кажется довольно простым, за исключением того, что единственным жизнеспособным дискриминатором является company_id, который представляет собой столбец для лица, обозначающий, какую компаниючеловек принадлежит.Если company_id = 1, это сотрудник, в противном случае это просто обычный человек.
Так что, насколько я могу судить, мне нужна карта, которая выглядит следующим образом:
/**
* @InheritanceType( "SINGLE_TABLE" )
* @DiscriminatorColumn( name = "company_id", type = "integer" )
* @ORM\DiscriminatorMap({
* 1 = "Employee",
* 2 = "Person",
* 3 = "Person",
* ...
* 5001 = "Person"
* })
*
* @ORM\Table(name="person")
* @ORM\Entity
*/
class Person
{}
ЭтоСпособ картирования невозможно поддерживать.Я посмотрел вокруг, но я не нашел хорошего решения для этого.Сейчас я использую суперкласс Mapped, а затем указываю Person и Employee на таблицу person, которая работает с точки зрения кода, но если я запускаю схему, проверьте ее ошибки, так как имя таблицы уже существует.Это затрудняет поддержание отображения.