我正在尝试制作类似于 facebook 的消息功能。只是消息而不是facebook。一个简短的描述就是这样。
1)有多个用户(用户表) 2)一个人可以向一个或多个人发送消息。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',
)
);
消息用户模型
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 删除了一条不应在收件箱中显示任何内容的消息。但用户 2 可以看到他的整个对话。