Перейти к основному содержимому

Обратная связь объектов (Reverse Object Relation)

Обратные связи объектов — это зеркальный тип относительно полей Many-To-Many Object Relation и Many-To-One Object Relation. Они позволяют отображать и редактировать связи, которые фактически принадлежат удалённому объекту.

Пояснение на примере:

Поле Reverse Object Relation

Предположим, у вас есть объект «товар» (product), у которого есть поле Many-To-Many Object Relation с именем accessories (аксессуары). Обычный способ установить связь — открыть карточку товара и добавить в поле accessories другие объекты товаров (перетаскиванием или выбором). Если вы хотите также иметь возможность открыть карточку аксессуара и указать в ней, для каких товаров этот аксессуар предназначен (т. е. отобразить и изменить обратную связь из карточки аксессуара), вам понадобится поле Reverse Object Relation. Такое поле настраивается с указанием имени удалённого класса (remote class) и имени поля в этом удалённом классе, которое содержит фактическую связь. После настройки вы сможете не только назначать аксессуары товару, но и из карточки аксессуара определять, для каких других товаров он является аксессуаром.

Конфигурация Reverse Object Relation

Поле Reverse Object Relation не создаёт собственной колонки в базе данных и не хранит данные локально. Данные физически хранятся в удалённом (владеющем) объекте; Reverse Object Relation лишь представляет альтернативный интерфейс для установки/просмотра этих связей с уровня зависимого объекта. Когда в поле Reverse Object Relation добавляется объект, это фактически означает изменение владельца связи (удалённого объекта). Если владеющий объект открыт в интерфейсе Pimcore в тот же момент, Pimcore предупредит вас о том, что вы собираетесь изменить объект, который уже открыт. Если владеющий объект открыт в UI, его потребуется перезагрузить, чтобы изменения, внесённые из удалённого объекта, стали видимы.

Работа через PHP API​

Поскольку данные Reverse Object Relation принадлежат удалённому объекту, их можно устанавливать или изменять только через владельца.

Получение связей через PHP API​

Чтобы получить владельцев (owner objects), используйте соответствующий геттер объекта.

$ownerRelations = $object->getMyReverseObjectRelationField();  


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.