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
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.