Я попытался выполнить такой простой запрос для начала:
SELECT *
FROM discourse_post_event_invitees
WHERE post_id = :post_id
К сожалению, для поста, в котором, как я знаю, 15 пользователей отмечены как «Иду», возвращается 0 результатов. Есть какие-нибудь идеи?
Это должно сработать. Вы берёте правильный идентификатор поста из JSON?
Думаю, можно связать это с таблицей posts и использовать идентификатор темы, что может быть менее хлопотно, чем поиск идентификатора поста. Что-то вроде:
-- [params]
-- topic_id :topic_id
SELECT ei.user_id, ei.status
FROM discourse_post_event_invitees ei
JOIN posts p ON p.id = ei.post_id
WHERE p.topic_id = :topic_id
Хорошо, всё ближе. Это возвращает всех, кто собирается или заинтересован, но как их различить?
А, понятно, название ключа “status” немного сбило меня с толку. Я думал, что это какой-то статус события.
status = 0 = Иду
status = 1 = Интересуюсь
status = 2 = Не иду
Чтобы сделать код чуть более читаемым и не запоминать все коды, можно добавить что-то вроде этого:
-- [params]
-- topic_id :topic_id
SELECT ei.user_id,
CASE
WHEN ei.status = 0 THEN 'Иду'
WHEN ei.status = 1 THEN 'Заинтересован'
WHEN ei.status = 2 THEN 'Не пойду'
END AS "Идёте?"
FROM discourse_post_event_invitees ei
JOIN posts p ON p.id = ei.post_id
WHERE p.topic_id = :topic_id
ORDER BY ei.status