EugeneOne77
@EugeneOne77
Laravel, Vue, Wordpress разработчик.

Как в базе делается «просмотренно» на сообщениях и задачах для разных пользователей?

Есть задачи, если сообщения. И то и другое может быть редактируемое. Мы храним дату изменений. Смотреть это могут несколько разных пользователей, причем права просмотра у них могут менять.
Нужно показывать количество непросмотренных каждому пользователю.
Мое решение - таблица, где хранится дата последнего просмотра. При выводе на фронте джойним и там сравнивается.
user_id | task_id | date_view

Для задач еще куда ни шло, их не так много, а вот для сообщений мне кажется перебор. Есть какие-то лучшие решения?
  • Вопрос задан
  • 203 просмотра
Решения вопроса 2
@hello_my_name_is_dany
Backend Developer (Node.js, PHP, C#)
Вот, что мне пришло первое в голову:
Я бы хранил так
user_id | task_id | is_watched
И написал бы триггер (CREATE TRIGGER) на изменение задачи, чтоб менял всем подписанным пользователям is_watching на false.
А при просмотре (уже в рамках приложения), меняем на true.
В принципе должно быстро считаться кол-во непросмотренных.
Ответ написан
@rPman
Да, отдельная таблица пользователь+пост, хранить boolean 'просмотрели' или два поля - дата последнего просмотра и дата последнего изменения (последний в таблице сообщений)

Но главное, не считайте количество каждый раз при запросе из базы, лучше считайте количество на изменении, и сохраняйте рядышком в таблице сообщений, особенно если просмотры происходят чаще редактирований
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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