ORM запрос на примере Highload-блоков. Функция базы данных СOUNT. Подсчет количества связанных записей по условию.


В этой статье я постараюсь познакомить вас с агрегирующей функцией запроса в базу данных COUNT на ядре D7 Bitrix.

Немного о структуре, с которой придется работать.

СТРУКТУРА:
Существует 2 хайлоад-блока. В одном хранятся комментарии (назовем его Comments), в другом хранятся реакции на комментарии (назовем его Reactions).

Хайлоад-блок реакций содержит 2 типа записи - лайк (like) и дизлайк (dislike).
Так же каждая запись имеет у себя ключ-привязку к полю комментарий (обязательное поле).
Значение реакции устроено одним полем value и хранит в себе соответствующее значение true/false. Лайку соответствует true, дизлайку - соответственно false.

Структура таблицы комментариев

Структура таблицы реакций

ЗАДАЧА:
  • получить список комментариев,
  • добавить к каждому комментарию количество лайков и дизлайков
  • предоставить возможность сортировки по добавленным полям

Для решения поставленной задачи воспользуемся runtime полями.
Класс таблицы Highload-блока комментариев условно назовем CommentsHighloadClass.
Класс таблицы Highload-блока реакций условно назовем ReactionsHighloadClass.


Каждый элемент (массив) комментария будет содержать в себе все поля стандартной таблицы комментариев, которые представлены выше, а так же к ним будут добавлены поля COUNT_LIKES и COUNT_DISLIKES.

Поля будут содержать целое число количества лайков и дизлайков к каждому комментарию.
Данные дополнительные поля доступны для сортировки в параметре "order".

Версия модуля highloadblock - 22.200.0
Версия модуля main - 22.600.300

Всем удачи! Всем МИР!

Комментарии

Оценка:
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке