symfony Doctrine -- Unidirectal, Bidirectal и Self-referencing associations - разница

В Symfony с помощью аннотаций к сущностям можно создавать связи между таблицами базы данных: Один к одному, один ко многим и многие ко многим.

Вид связи Unidirectal, Bidirectal и Self-referencing указывает на то, как можно получить объект одной из связанных таблиц:

  • Unidirectal - односторонняя связь. Можно получить объект сущности, связанной с данной, но не наоборот. Используйте, если обратная связь вам явно не потребуется, например, если одна таблица содержит индивидуальные характеристики каждого поля другой.

    В коде: Аннотации, совйство и методы добавляем только в основную сущность, с помощью которой собираемся доставать информацию из другой. Пример из документации

  • Bidirectal - двусторонняя связь. Имея объект данной сущности мы можем достать из базы сущности связанной таблицы, соответствующие этому объекту, И НАОБОРОТ: имея объект связанной сущности, можем достать объекты данной.

    В коде: Аннотации, свойства и методы добавляем в обе сущности по примеру из документации.

  • Self-referencing - связь внутри одной сущности / таблицы. Этот вид связи выделен отдельно, но по сути он содержит в себе возможность и односторонней связи, и двусторонней.

    В коде: Если есть разница, с помощью какого объекта данной сущности обращаться к другому объекту данной же сущности, можете оставить 2 поля и 6 методов, описывающих связь (тогда получится двусторонняя внутренняя связь) или 1 поле и 3 метода. Можно также оставить промежуточный вариант, по вашим потребностям.

Источник

http://docs.doctrine-project.org/project...