Мне я положу удаленный столбец один раз и то же самое для чтения или не чтения вроде:
[{"0":"both", "1":"Sender", "2":"receiver"}];
И затем извлечение сообщения протектора, например:
$sql = "SELECT * FROM messagetreads
WHERE (senderID OR receiverID = ".$_SESSION['MyCurrentId'].")
AND deleted !== 0
ORDER by TreadID AND DateTime ASC";
Когда отправитель "удаляет" протектор ... Все relatedID протектора в базе данных изменяются на 1 или 0, если delete colomn равен 2 ...
Но я думаю, что лучше создать еще одну колонку для получения повторных удаленных данных и уведомлений, таких как
- TreadID (FK_message_Table)
- удалить (0 = оба удаленных ИД пользователя = не показывать ни этому отправителю, ни получателю)
- notify (0 = оба читают UserID = читают этому отправителю или получателю)
Тогда нужно изменить статус или оператор удаления.
SELECT будет выглядеть примерно так:
$SQL = "SELECT *
FROM messagetreads
WHERE (senderID OR receiverID = ".$_SESSION['MyCurrentId'].")
IN (SELECT TreadID WHERE delete !== (0 OR ".$_SESSION['MyCurrentId']."))";
Если наш идентификатор участника связан с удалением колонки, то все протекторы не отображаются, но если идентификатор получателя, когда отправитель удалит 0, можно присвоить 0, чтобы оба члена могли «удалить» сообщение. То же самое для уведомлений!
очень скоро может появиться задание cron удалить очень старое сообщение прочитанное (0) ...
PS: это может быть и система уведомлений, например, уведомление о новом сообщении на стене или комментирование фотографий или новых событий в календаре ... просто добавьте дополнительную информацию в данные столбца и заформатируйте ее как php или java-ajaxed. ..