veydlin
@veydlin
Мне никогда не жалко средств на свое любопытство

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

Чтобы не объяснять смысл устройства сайта, я упрощу вопрос оставив главное.

Представим, что есть социальная сеть, пользователь подписывается на паблики и новости этих пабликов выводятся у него в ленте (все прямо как во всеми любимом ВК).
Только одно но, пользователь может и будет удалять посты из своей ленты, и удаленный пост больше никогда не должен появится у него в ленте

У меня возникло только 2 способа решения этой проблемы:

1) Для каждого юзера есть БД, и как только паблик добавляет пост, этот пост добавляется каждому юзеру, что подписан на паблик. Но это как-то накладно, что будет когда на паблик подписаны десятки тысяч, когда таких пабликов не меньше, и каждый в день добавляет много постов?

2) Как только юзер удаляет пост, в таблицу заноситься id новости, которую он удалил. Структура таблицы del_news примерно такая: user_id, news_id. И уже по этой таблице будет фильтроваться новости.
Но тут опять проблема, эта таблица не слабо так разрастется, ведь пользователь будет удалять не мало новостей, а они не при каких условиях не должны появиться вновь, т.е. таблицу очищать с течением времени нельзя. По моему это тоже будет очень нагрузочно

Какие ещё могут быть решения?
  • Вопрос задан
  • 210 просмотров
Решения вопроса 1
Вариант 2 верный.
Не стоит бояться кол-ва записей в таблице.
В случае правильной оптимизации базы (создания индексов нужных индексов и верного построения запросов) всё будет достаточно быстро работать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
У вас в колледже экзамены что ли?
Ну вы бы, как нормальные студенты, списывали друг у друга, а не по одиночке ходили
Как организовать удаления записей из ленты пользователя?
Ответ написан
В таблицу связки пользователя и новости можно добавить флаг is_hidden например.
Проставляете его при скрытии пользователем новости, при этом не нужно городить какие-то отдельные таблицы или удалять связи между таблицами.
Ответ написан
Ваш ответ на вопрос

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

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