Facebookに似たメッセージ機能を作ろうとしています。Facebookではなく、メッセージだけです。簡単な説明はこのようにします。
1) 多数のユーザーが存在します ( user テーブル) 2) 1 人のユーザーが 1 人または複数の人にメッセージを送信できます。3) 同じメッセージに複数の返信がある場合があります。4) 複数人に送る場合。全員が返信でき、全員に表示されます。
使用したテーブル
メッセージ テーブル
id
timestamp
sender_id
subject
message
due_date
urgent_flag
open_flag
reply_id
message_user (テーブル)
id
timestamp
message_id
receiver_id
read_flag
CakePHP の関係は次のとおりです。
メッセージ モデル
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 モデル
var $belongsTo = array (
'User' => array (
'className' => 'User',
'foreignKey' => 'receiver_id',
),
'Message' => array (
'className' => 'Message',
'foreignKey' => 'message_id'
)
);
質問:
1) 私のアプローチは正しいですか? または、データベース スキーマを修正する必要があります。2) はいの場合、受信トレイのデータを取得するにはどうすればよいですか? 人々が私に送ったメッセージの会話を表示したいので、これは少し複雑です。
たとえば、ユーザー 1 がユーザー 2 にメッセージを送信します。ユーザー 2 は同じメッセージに 2 つの返信を追加します。次に、ユーザー 1 の受信トレイには 1 つのメッセージのみが表示されます。そして開くと。以前のメッセージも表示されます.. (これは Facebook に似ています)
ここで見られるもう 1 つの問題は、メッセージを削除する方法です。ユーザー 1 が、自分の受信トレイに何も表示しないはずのメッセージを削除したとします。しかし、ユーザー 2 は、彼が行った会話全体を見ることができます。