Je suivant le schéma de base de données pour l'application de messagerie Je crée: -Étendre la base de données pour le groupe/messagerie collaborative
Nom de la table: - conversation_threads
+-----------------+-------+---------+
| conversation_id | label | members |
+-----------------+-------+---------+
| 1 | TEST | 1,2 |
+-----------------+-------+---------+
| 2 | XYZ | 4,1 |
+-----------------+-------+---------+
Nom de la table: - messages
+------------+----------------+-----------+-----------------+---------------------+
| message_id | message | sender_id | conversation_id | created_at |
+------------+----------------+-----------+-----------------+---------------------+
| 1 | Hello | 1 | 1 | 2017-09-12 09:00:00 |
+------------+----------------+-----------+-----------------+---------------------+
| 2 | Hi | 2 | 1 | 2017-09-12 09:02:00 |
+------------+----------------+-----------+-----------------+---------------------+
| 3 | Hey! | 4 | 2 | 2017-09-12 08:16:00 |
+------------+----------------+-----------+-----------------+---------------------+
Nom de la table: - message_users
+----------+-------------+---------+--------+
| mu_id | message_id | user_id | status |
+----------+-------------+---------+--------+
| 1 | 1 | 1 | READ |
+----------+-------------+---------+--------+
| 2 | 1 | 2 | UNREAD |
+----------+-------------+---------+--------+
| 3 | 2 | 2 | READ |
+----------+-------------+---------+--------+
| 4 | 2 | 1 | UNREAD |
+----------+-------------+---------+--------+
| 5 | 3 | 4 | READ |
+----------+-------------+---------+--------+
| 6 | 3 | 1 | UNREAD |
+----------+-------------+---------+--------+
Ce schéma fonctionne assez bien avec la messagerie un-à-un. Mais maintenant je veux présenter plus de 2 utilisateurs dans une seule conversation afin que tous les 3 ou 4 personnes ou plus puissent collaborer et discuter de choses. Ce qui me pose un problème, c'est si j'ajoute un autre utilisateur dans le champ members
dans les fils de conversation - il obtient l'accessibilité pour lire tous les messages présents dans ce fil de conversation particulier depuis le début - bien qu'il ait été ajouté tard dans la conversation .
Veuillez me fournir une solution sur la façon de résoudre ce problème particulier.
J'espère que ma question n'est pas trop large.
Pas trop large, mais probablement de réponse à plusieurs reprises auparavant. Cela semble correct sauf pour les données CSV dans la table 'conversation_threads'. Débarrassez-vous de cela. –
@TimBiegeleisen - Donc, si je supprime la colonne 'members' - dois-je introduire une autre table pour stocker' conversation_thread_members'? Et comment est-ce que je m'approche pour résoudre le problème de montrer à un membre de fil seulement les messages qui ont été communiqués après qu'il ait rejoint la conversation? – khalid
Ah je vois! Donc, si j'ajoute un autre utilisateur - il ne recevra que les messages pour lesquels son identifiant est assigné dans la table 'message_users'. Donc, si j'ai besoin de diffuser un petit message spécial (surligné) comme "l'utilisateur A a rejoint la conversation" - je devrais simplement le stocker comme un message avec des informations supplémentaires qu'il s'agit d'un message "Surligner". Peut-être un champ de drapeau contenant son type. Donc, pour normal ce serait le message "TEXT", pour celui-ci, il serait "HIGHLIGHT" – khalid