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