Документация для разработчиков
Темная тема

Storage Strategy

Абстрактный класс \Bitrix\Crm\Relation\StorageStrategy и его наследники воплощают собой стратегии из одноименного паттерна проектирования.

Данные классы используются в \Bitrix\Crm\Relation для взаимодействия с БД.

При вызове из объекта 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