dzheka3d
@dzheka3d

Какова логика хранения данных для ленты событий?

Всем привет! Пытаюсь реализовать ленту событий как вконтакте на php и mysql.
Суть такая... У меня (пользователя) есть комментарии, посты, фотографии. Нужно сделать ленту типа:
- Пользователь такой-то ответил на ваш комментырий.
- Пользователю такому-то понравилась ваша фотография.
- Пользователю понравился ваш комментарий.
- Пользователь такой-то принял заявку в друзья.
В сети и на тостере уже много тем перелопатил, но все или отдаленно или совсем не то. Как хранить данные для такого вывода? Решил сделать так:
При публикации комментария, или установке лайка или принятии заявки в друзья, в таблицу feed_events добавляем, `id действующего юзера`, `id того, чья запись и лента`, `id записи`, `текст который отобразится в ленте`. Его придется генерировать на стадии записи в БД. Например если это лайк к фотографии, то пишем в это поле "понравилась фотография"
если это ответ на комментарий - пишем "ответил на ваш комментарий" и т.д.

Что вы думаете? Правильный ли это подход?

И вот еще проблема. При выводе самого события хотелось бы выводить и ссылку на пост, комментарий, фотографию с которой событие связано... Как в этом случае хранить ссылку? Просто как готовая ссылка - это вариант, но если например захочется вывести превью фотографии к которой написали комментарий, то тут було бы целесообразней хранить её id. Тут сталкиваюсь с проблемой, ведь это может быть и id фотографии и id комментария и id поста. Как тогда JOIN-ить нужную таблицу?
  • Вопрос задан
  • 209 просмотров
Решения вопроса 1
sayber
@sayber Куратор тега PHP
Да, я программирую на PHP и еще асинхронно!
id, userId, entityId, entityType, createdAt, updatedAt
Как то так можно.

Т.к.
id - УН записи
userId - УН пользователя
entityId - УН записи/лайка/etc...
entityType - тип сущности (post, like, msg ....)
createdAt - дата создания
updatedAt - дата обновления (т.е. когда юзер прочел уведомление)

Соответственно, если есть/отличается updatedAt, то не выводим.
Можно добавить id пользователя который запостил/лайкнул

Программа видит что есть новые не прочтенные записи, смотрит кому отображать, какую сущность взять (фото, пост и т.д.)
Все зависит от конкретной подачи информации.

Реализаций множество =)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы