Я думаю, вам нужна только одна таблица:
Message:
columns:
from: integer
to: integer
header: string(100)
body: blob
show_in_outcoming:
type: boolean
default: true
show_in_incoming:
type: boolean
default: true
is_read:
type: boolean
default: false
UserFrom:
class: sfGuardUser
local: from
foreign: id
foreignType: one
type: one
UserTo:
class: sfGuardUser
local: to
foreign: id
foreignType: one
type: one
, где
- is_read указывает, было ли сообщение прочитано (false - не прочитаноtrue - чтение - только для входящих сообщений)
Если пользователь, отправляющий сообщение, хочет удалить его, мы просто скрываем его (не удаляя из БД) - установите для show_in_outcoming значение false.Если пользователь, получивший сообщение, хочет удалить его, мы тоже его скрываем - установите для show_in_incoming значение false.Такой подход позволяет нам восстановить «скрытые» сообщения (или удалить их вообще)