alestro
@alestro

Как реализовать реакции для сайта?

Есть таблица (скрин ниже).
66ddedb7274d2688699452.png
Запросом подсчитываю количество реакций, например, к комментариям. Но не знаю как лучше выбирать диапазон user_id для всех реакций. Думал объединять все id в одну строку через запятую, но мне кажется это костылем. Или получать их отдельным запросом, с фронта. Мб можно хранить битовую маску из id всех, кто оставил реакцию.
Или получать все строки из таблицы без агрегации и уже считать на стороне сервера. Как лучше сделать?
SELECT count(id) AS `count`, comment_id AS commentId, user_id, code FROM reactions 
WHERE comment_id IN (187, 188)
GROUP BY code, commentId;
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
«Диапазон user_id для всех реакций» — это вы так называете идентификаторы всех пользователей, оставивших конкретную реакцию к конкретному комментарию (тогда это не «диапазон» и не «для всех реакций»)?

Если так, то самое простое и адекватное — использовать group_concat, он для этого и предназначен. Ну либо агрегировать в коде, да. Тут уж самостоятельно решайте, что будет лучше, в зависимости от вашего чувства прекрасного и особенностей проекта.
Битовая маска в данном случае — это какая-то дичь. Делать второй запрос тоже так себе идея.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы