Storage Strategy
Абстрактный класс \Bitrix\Crm\Relation\StorageStrategy
и его наследники воплощают собой стратегии из одноименного паттерна проектирования.
При вызове из объекта Relation, стратегия должна вернуть элемент, сохранить или удалить данные. Каждая стратегия делает это своим собственным способом. Каким конкретно (к какой таблице обратиться, какое API вызвать) - зависит от самой стратегии.
Абстрактные методы
Чтобы добавить новую стратегию хранения данных, нужно создать новый класс-наследник \Bitrix\Crm\Relation\StorageStrategy
. Естественно, придется реализовать абстрактные методы.
Метод | Описание | С версии |
---|---|---|
getParentElements( ItemIdentifier $child, int $parentEntityTypeId ): ItemIdentifier[] | Метод возвращает всех родителей элемента $child. Родители должны принадлежать к типу сущности с $parentEntityTypeId (быть отфильтрованы по entityTypeId === $parentEntityTypeId ). | |
getChildElements( ItemIdentifier $parent, int $childEntityTypeId ): ItemIdentifier[] | Метод возвращает всех потомков элемента $parent. Потомки должны принадлежать к типу сущности с $childEntityTypeId (быть отфильтрованы по entityTypeId === $childEntityTypeId ). | |
areItemsBound( ItemIdentifier $parent, ItemIdentifier $child ): bool | Метод возвращает true если элементы связаны. | |
createBinding( ItemIdentifier $parent, ItemIdentifier $child ): \Bitrix\Main\Result | Метод создаёт новую запись в БД, чтобы сохранить связь между переданными родителем и потомком. Возвращает Result\Bitrix\Main\Result, в который можно сложить ошибки, если они возникли во время сохранения. | |
deleteBinding( ItemIdentifier $parent, ItemIdentifier $child ): \Bitrix\Main\Result | Метод удаляет запись в БД, чтобы отвязать элементы друг от друга. Возвращает \Bitrix\Main\Result, в который можно сложить ошибки, если они возникли во время удаления. |
© «Битрикс», 2001-2024, «1С-Битрикс», 2024