J'essaye de faire une fonctionnalité de messages semblable au facebook. Juste le message et pas facebook. Une brève description aime ça.Relations CakePHP - Comment configurer la relation pour le système de messagerie?
1) Il y a un certain nombre d'utilisateurs (table utilisateur) 2) Une personne peut envoyer un message à une ou plusieurs personnes. 3) Il peut y avoir plusieurs réponses au même message. 4) Si c'est envoyer à plusieurs personnes. Tout le monde peut répondre et c'est montrer à tous.
Tables utilisées
messages Table
id
timestamp
sender_id
subject
message
due_date
urgent_flag
open_flag
reply_id
message_user (tableau)
id
timestamp
message_id
receiver_id
read_flag
Les relations CakePHP sont les suivantes:
message Modèle
var $hasMany = array(
'MessageUser' => array(
'className' => 'MessageUser',
'foreignKey' => 'message_id',
)
);
var $belongsTo = array (
'User' => array (
'className' => 'User',
'foreignKey' => 'sender_id',
)
);
var $hasAndBelongsTo=array(
'Message' => array (
'className' => 'Message',
'foreignKey' => 'reply_id',
)
);
MessageUser Modèle
var $belongsTo = array (
'User' => array (
'className' => 'User',
'foreignKey' => 'receiver_id',
),
'Message' => array (
'className' => 'Message',
'foreignKey' => 'message_id'
)
);
Questions:
1) est mon approche correcte? Ou le schéma de base de données doit être révisé. 2) Si oui, comment dois-je récupérer les données pour la boîte de réception? C'est un peu complexe car je veux montrer la conversation pour les messages que les gens m'ont envoyés. Par exemple, l'utilisateur 1 envoie un message à l'utilisateur 2. L'utilisateur 2 ajoute 2 réponses à la même chose. Alors la boîte de réception des utilisateurs 1 devrait montrer seulement 1 message. et quand je l'ouvre. il va montrer les messages précédents aussi .. (c'est similaire à facebook)
Un autre problème que je vois ici est, Comment supprimer les messages? Supposons que l'utilisateur 1 supprime un message qu'il ne doit rien afficher dans sa boîte de réception. mais l'utilisateur 2 peut voir toute la conversation qu'il a eue.
Mais comment récupérer les données de la boîte de réception ??? –