Позвольте мне начать с описания сценария. У меня есть объект Note, который может быть назначен для множества разных объектов
- A Книга может содержать одну или несколько Примечание.
- Изображение может содержать одну или несколько Примечание.
- A Адрес может иметь одну или несколько Примечание.
Что я вижу в базе данных:
книга
id | title | pages
1 | harry potter | 200
2 | game of thrones | 500
изображение
id | full | thumb
2 | image.jpg | image-thumb.jpg
адрес
id | street | city
1 | 123 street | denver
2 | central ave | tampa
примечание
id | object_id | object_type | content | date
1 | 1 | image | "lovely pic" | 2015-02-10
2 | 1 | image | "red tint" | 2015-02-30
3 | 1 | address | "invalid" | 2015-01-05
4 | 2 | book | "boobies" | 2014-09-06
5 | 1 | book | "prettygood" | 2016-05-05
Вопрос в том, как я могу моделировать это внутри Doctrine. Все, что я прочитал о разговорах о наследовании отдельных таблиц, не имеющих отношения "один-два".
Чтобы отметить (каламбур не предназначен;), вы можете заметить, что заметке никогда не нужны уникальные атрибуты на основе связанного с объектом объекта.
В идеале я могу сделать $address->getNotes()
, который вернет тот же тип объекта Note, который вернет $image->getNotes()
.
Как минимум проблема, которую я пытаюсь решить, состоит в том, чтобы избежать трех разных таблиц: image_notes, book_notes и address_notes.