Я пытаюсь сделать функциональность сообщений похожей на 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',
)
);
Модель 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 удаляет сообщение, которое он не должен показывать в своем почтовом ящике.но пользователь 2 может видеть весь разговор, который у него был.