@photosho

Как грамотно построить дерево пользователей в Bitrix?

Пользователь A приглашает пользователя B на сайт и сохраняется для B как пригласивший. Пользователь B приглашает таким же образом пользователя C, а C приглашает D и E. Каким образом лучше построить структуру в Bitrix, чтобы удобно получать дерево приглашённых для любого пользователя до определённого уровня? То есть, для пользователя A дерево 3 уровней будет: B > C > D + E.

Если просто сохранять ID пригласившего, например, в пользовательском поле (UF), то в этом случае получение всего дерева потребует количества запросов, равного глубине дерева. То есть, мы получаем всех пользователей, у которых ID пригласившего равен текущему, затем собираем ID полученных и проделываем то же самое, и т.д. Может быть, есть какие-то способы сократить количество запросов?
  • Вопрос задан
  • 94 просмотра
Решения вопроса 2
Adamos
@Adamos
Вопрос в том, что вы хотите от этих данных, кроме рисования дерева. Поиск по ним, например.
Так-то можно просто воткнуть пользовательское строковое поле, в котором через разделитель вписаны ID вышестоящих по дереву. Приглашенному просто вписывается это поле родителя + разделитель + его ID.
Ответ написан
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
Я бы либо создал инфоблок и создавал разделы на основе связей между пользователями, либо сам написал реализацию для хранения дерева в базе. Вот статья о разных способах хранения дерева в реляционной бд.
Битрикс для разделов использует Nested sets.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы