Palehin
@Palehin
Frontend

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

После авторизации пользователя, он видит ленту неких записей, которые обновляются время от времени.
Пользователь может "скрывать" записи из своей ленты.
Нужно сделать так, чтобы если пользователь скрыл какие-то записи в ленте, то при следующей загрузке страницы с лентой записей, те записи которые он скрыл - не загружались в его ленту.
Вопрос в том, как правильно реализовать такую функцию, как хранить в базе "удаленные" записи конкретного пользователя и проверять их при выводе?

Мой вариант, это записывать id удаленной записи и id пользователя в таблицу и при выводе проверять, если запись с такием то id "удалена", то не выводить ее. Но мне кажется это ресурсоемкая фигня получится.
  • Вопрос задан
  • 238 просмотров
Пригласить эксперта
Ответы на вопрос 3
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Это одна из задач которые не имеют однозначно правильного решения.
В любом случае решение будет затратным по ресурсам.

Я знаю 2 варианты:

1) Табличка hidden_post вида user_id, post_id
Пишем туда посты которые скрываем, на выводе фильтруем.
[+] требуется не много дополнительного места для хранения
[-] геморройная сборка ленты новостей (на больших данных where post_id not in (...) использовать нельзя )

2) хранить для каждого пользователя список id постов которые он должен видеть
[+] простой вывод ленты постов пользователя
[+] можно реализовывать всякие хитрые правила какой пользователь видит какой пост.
[-] требуется МНОГО места
[-] сложный код обновления этих списков
[-] лента пользователя не бесконечная скорее всего.

В принципе варианты можно совместить, для свежих постов вариант 2, для старых - вариант 1.
Ответ написан
@miki131
А почему не сделать для записи флаг deleted ?
Ответ написан
Да просто добавьте поля статуса записи в базе и меняйте его. Например статус 1 запись опубликована, 2 удалена ну еще любые промежуточные состояния. А при выводе фильтруйте в запросе только с ос статусом, который вам нужен.
В итоге таблицs с записями должны иметь вид типо такого:
id, userid, messageid , вторая таблица содержит всю инфу о сообщении в том числе и статус. Их связываешь и имеешь счастье)
Ответ написан
Ваш ответ на вопрос

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

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