Целью Doctrine является сопоставление объектов из схемы E / R и упрощение доступа к объектным соединениям.Поэтому я считаю, что таблица cats_dogs
, автоматически предоставленная Doctrine, необходима как она есть.Оно лаконично и соответствует своим целям, т. Е. Содержит список всех собак кошки или, наоборот, всех кошек собаки.
Таким образом, я могу заключить, что предпочтительно создать третьюсущность (кроме Cat
и Dog
) с именем Award
, которая обеспечивает отношение один-к-одному с Cat
и еще одно отношение-к-одному с Dog
.Приведение его в соответствие с таблицей cats_dogs
зависит только от вас и не является задачей Doctrine по умолчанию.Например, вы можете использовать несколько вариантов каскадного сохранения.Я считаю, что это самое эффективное решение с доктриной.
В качестве заключительного замечания следует учитывать, что каждая таблица должна отображать определенные отношения между одним или несколькими объектами, и фактически таблица cats_dogs
представляет отношения дружба , а таблица Award
будет представлять награжденные отношения отношения между двумя друзьями.