Доктрина Один ко Многим Не Присоединяйтесь - PullRequest
4 голосов
/ 21 октября 2011

Я пользуюсь Doctrine, и мне интересно, могу ли я иметь отношения «Один ко многим» без использования таблицы соединений?

Ответы [ 2 ]

6 голосов
/ 03 июля 2013

Зависит от того, хотите ли вы, чтобы он был однонаправленным или двунаправленным.

Однонаправленные отношения «один ко многим» могут быть сделаны только через таблицу соединений по «идеологическим» причинам, вытекающим из спящего режима Java:

http://docs.doctrine -project.org / проекты / Доктрина-ОРМ / ен / последний / ссылка / ассоциативно-mapping.html # один-ко-многим-однонаправленный-с-присоединиться к столу

Представьте, что у вас есть категория, в которой много продуктов, и вы хотите однонаправленное отношение - то есть категория знает о многих продуктах, но продукты не знают о категории.

Если вы поместите поле 'category_id' в таблицу Product, вы сделаете таблицу продукта "осведомленной" о том, что она связана с категорией. И вы не сможете удалить это отношение, не изменив таблицу Product - это означает, что она не является однонаправленной.

Но если вы сохраняете связь между категорией и продуктами в отдельной таблице соединений, вы можете просто удалить ее, и Product даже не заметит, что что-то изменилось.

0 голосов
/ 21 октября 2011

Таблица соединения требуется только для отношений m: n.

...