учение symfony конкретное наследственное объединение - PullRequest
0 голосов
/ 08 марта 2012

Итак, моя проблема похожа на этот вопрос о стекопереработке и других. Но это все еще не ясно для меня. Предположим, я хочу моделировать компьютеры и телефоны. В моей модели и компьютеры, и телефоны - это машины. Поэтому я создаю класс «Machine», «Computer» и «Phone». Телефон и компьютер наследуются от машины (конкретное наследование). Это всего лишь пример, конечно.

Теперь я хочу связать эти продукты с таблицей People. Поскольку нет никакой разницы между телефоном и компьютером, когда дело касается их связи с людьми, я ожидаю, что наследство создаст связь между машиной и людьми, а не между компьютером и людьми или телефоном и людьми. Однако: doctrine создает таблицу Machine, которая всегда пуста (как указано в документах Symfony). Поэтому, если я добавлю свой первый телефон, он получит идентификатор 1. Если я добавлю свой первый компьютер, он также получит идентификатор 1.

Итак, чтобы реализовать мою связь с людьми, вся эта конкретная схема наследования бесполезна, нет? Мне нужно создать две отдельные таблицы ссылок: одну, связывающую телефоны с людьми, и одну, связывающую компьютеры с людьми. Я ожидал, что доктрина сохранит и телефоны, и компьютеры в таблице компьютеров, каждый раз давая новый идентификатор, а затем копируя этот идентификатор в таблицу телефона или компьютера. Таким образом, вы можете использовать этот идентификатор для связи с другими таблицами.

Есть ли другой способ сделать это? Или мне придется взломать сохранение формы, чтобы сделать это самому? Я ожидал такого поведения, может кто-нибудь сказать мне, почему я ошибался, ожидая этого?

...