@GaserV

Как спроектировать системы диалогов?

`Всем привет! Подскажите пожалуйста. Для удобства хочу реализовать ЛС на своем сайте в виде диалогов с возможностью добавления собеседников. В данный момент спроектировал так:

messages: id, dialog_id, user_id, content, date
dialogs: id, title, dates
dialog_file (для прикреплений файлов): id, dialog_id, file_id, date
user_dialog: id, user_id, dialog_id, unread, status, date

Алгоритм такой. Изначально, новое сообщение юзер пишет в модальном окне пользователю. На бэке создаю новый dialog, делаю 1 инсерт в messages и делаю 2 инсерта в user_dialog(1 для отправителя, 2-й для получателя). Все записывается, вроде все гуд. Но тут столкнулся с проблемой такой. В ЛС выводится список диалогов. Диалог вывести не составит труда, а вот как вывести отправителя?

P.S. Быть может как-то по-другому спроектировать? Подскажите пожалуйста.
  • Вопрос задан
  • 297 просмотров
Пригласить эксперта
Ответы на вопрос 2
@IceJOKER
Web/Android developer
messages: id, dialog_id, user_id, text, date
dialogs: id, title, date
dialog_file (для прикреплений файлов): id, user_id, dialog_id, file_id, date
dialog_user: id, user_id, dialog_id, unread, status, date

как-то так
Ответ написан
@BorisKorobkov Куратор тега PHP
Web developer
Файлы лучше прикреплять к message_id, а не dialog_id.

Добавленный собеседник должен видеть весь диалог, в том числе и сообщения, написанные до добавления собеседника в диалог?

unread относится ко всеми диалогу? А если юзер прочитал весь диалог, а потом туда добавилось новое сообщение?

Диалог вывести не составит труда, а вот как вывести отправителя?

Отправителя чего: первого сообщения, последнего, первого непрочитанного и т.д.?
Ответ написан
Ваш ответ на вопрос

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

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