Я строю систему обмена сообщениями для CMS и не могу найти способ узнать количество непрочитанных сообщений в цепочке сообщений.
Мне нужен способ выяснить, является ли основное сообщение или какое-либо из его ответных сообщений непрочитанными.
У меня есть таблица с названием "messages", которая имеет поля:
идентификатор, активный [1,0], тема, сообщение, дата и время, user_from, user_to, ответ, просмотрено, удалено
Когда сообщение читается, я сохраняю этот идентификатор пользователя с разделителями-запятыми в поле просмотра:
, 3,4,12,
Затем, чтобы выяснить, просматривается ли он, я ищу идентификатор отправителя следующим образом:
m.viewed LIKE '%,$user_id,%'
Я просто выясняю, как включить эту логику в этот SQL-выбор, чтобы я мог видеть, должно ли родительское сообщение быть помечено как непрочитанное. Следующий SQL отлично работает, захватывает все сообщения и количество ответов и упорядочивает их по дате / времени.
SELECT m.*, COUNT(*) AS num_replies, MAX(r.datetime) AS max_datetimeunread_replies
FROM directus_messages AS m
LEFT JOIN directus_messages as r
ON m.id = r.reply
WHERE m.active = '1'
AND m.removed NOT LIKE '%,$user_id,%'
GROUP BY m.id
HAVING m.reply = '0'
ORDER BY datetime DESC, max_datetime DESC
Любая помощь будет принята с благодарностью ... Я не могу обернуть голову вокруг нее!