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

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-2023, «1С-Битрикс», 2023
Наверх