Как правильно сделать непрочитанные уведомления на сайте?

Приветствую друзья.
Собираюсь сделать на сайте список уведомлений, но перед этим хотелось бы услышать логику реализации от тех, кто с этим уже сталкивался.
Например есть две вещи, о которых я хотел бы уведомить пользователя, "новости" и "новые достижения".
Как это будет в базе. Есть мысль, что будет для них две таблицы и в обеих добавить ячейку read_true например, и потом функцией смотреть, где она равна нулю и суммировать.
Но мне почему-то показался метод не универсальным, так как если я захочу к примеру добавить еще оповещение о приходе сообщения, то придется видоизменять и таблицу и функцию.
Может сделать отдельную таблицу для уведомлений, где будет ячейка типа уведомления и пользователя, которому нужно его показать. Но не будет ли это излишним засорением базы.
Буду признателен, если поделитесь решением.
  • Вопрос задан
  • 637 просмотров
Решения вопроса 1
Если новость и достижение относится только к одному пользователю, то есть смысл ввести ячейку с флагом в саму таблицу с новостями, или достижениями.
Если одна новость может относится ко многим пользователям, то отдельную таблицу в которую вводить связи между новостями и пользователями, тоесть был просмотр внесли запись. Далее проверять на наличие записи.
Как вариант, отдельная табличка с уведомлениями, и при создании новости, вносить в неё запись о уведомлении. Вариантов масса, нужно исходить из деталей по задаче
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
Сделайте поле в таблице с пользователями, например history или user_settings, туда пихайте массив преобразованный в json. id статей, которые читал пользователь, разделы с подпиской, цвет трусов на аватарке и так далее. При авторизации инфа с пользователем попадает в сессию всместе с history (user_setting). Далее просто тянете все статьи, id которых нет в сессии.
Минус - подрастет таблица user (если не увлекаться и не пихать туда все что не попади - будет вполне сносно), плюсы - нет доп запросов к БД и они максимально простые.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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