[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Логическая ошибка, сообщения между пользователями
Миша
Логическая ошибка, сообщения между пользователями.

Есть одна таблица для сообщений, и если теперь один из пользователей удалит это сообщение, то у второго оно пропадёт. Какие есть решения?

_____________
Принимаю заказы, писать в ЛС
kaww
Цитата (Медведь @ 30.03.2015 - 10:15)
Какие есть решения?

Soft Delete - т.е не физически удалять из базы, а лишь отмечать как удаленное.
andrey888
Если второй не может читать удаленное сообщение - удаляй и выводи что сообщение было удалено. Но в соц. сетях так не делается.
Скорее просто ставится идентификатор по которому определяем кому показывать сообщение а кому(тому кто удалил) нет.

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Миша
Цитата (andrey888 @ 30.03.2015 - 14:26)
Если второй не может читать удаленное сообщение - удаляй и выводи что сообщение было удалено. Но в соц. сетях так не делается.
Скорее просто ставится идентификатор по которому определяем кому показывать сообщение а кому(тому кто удалил) нет.

Дополнительно поле int(1)

1 - показывать всем
2 - показывать отправителю
3 - показывать второму (кому отправлено)

Так?

_____________
Принимаю заказы, писать в ЛС
kaww
можно делать всего одно поле c числовым типом, обозвать его, например, state
и делать так:
STATE_READED = 1;// сообщение прочитано
STATE_DELETED_SENDER = 2;//отправитель удалил сообщение
STATE_DELETED_RECIPIENT = 4;//получатель удалил сообщение
таким образом, когда сообщение создается в базу пишем state=0
когда сообщение прочитано - state = state | STATE_READED
когда удалил отправитель - state = state | STATE_DELETED_SENDER
и так далее (стаусов можно напридумывать больше а поле все равно будет одно)
Теперь, неапример, чтобы получить все письма которые удалил отправитель - where status | STATE_DELETED_SENDER = STATE_DELETED_SENDER
сообщения которые не удалил отправитель - status & STATE_DELETED_SENDER = 0

https://ru.wikipedia.org/wiki/%D0%91%D0%B8%...%81%D0%BA%D0%B0
Guest
Медведь
Да именно ,
единственное что нужно иметь ввиду , что такой метод не позволит тебе в будущем делать конференции как это реализовано в контакте скажем, где группа лиц может видеть и читать сообщения. Хотя если пофантазировать для конференции можно просто убирать опцию удалить, либо создавать отдельную таблицу с другой логикой скрытия,показа сообщений.
andrey888
забыл залогиниться )

_____________
Прогноз на следующие 5 лет : Россия, Китай - две величайшие державы.
США в Ж*пе. Справедливость восторжествует. )
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.