Личные сообщения Symfony - PullRequest
0 голосов
/ 29 июня 2011

Я хочу делать личные сообщения на моем сайте. Я хочу, чтобы пользователь мог удалять полученные или отправленные сообщения. Для этого мне нужны две таблицы: одна для отправки сообщения и одна для получения .... Возможно ли, что когда пользователь отправляет сообщения, он автоматически добавляет две таблицы? или лучше сделать некоторые связи с таблицами? или может существовать лучшее решение?

Ответы [ 4 ]

2 голосов
/ 29 июня 2011

Я думаю, вам нужна только одна таблица:

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.Такой подход позволяет нам восстановить «скрытые» сообщения (или удалить их вообще)

1 голос
/ 29 июня 2011

Возможно, вам следует создать таблицу сообщений с отношением буксировки к пользовательской таблице:

message:
  columns:
    user_emitter_id: ...
    user_reciever_id: ...
    body: ...
  relations:
    userEmitter:
      class: user
      local: user_emitter_id
      foreign: id
    userReciever:
      class: user
      local: user_reciever_id
      foreign: id
0 голосов
/ 16 октября 2013
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

  relations:
    UserFrom:
      class: sfGuardUser
      local: from
      foreign: id
      foreignType: one
      type: one
    UserTo:
      class: sfGuardUser
      local: to
      foreign: id
      foreignType: one
      type: one
0 голосов
/ 29 июня 2011

Существует плагин Symfony, который позволяет вам сделать это.Проверьте sfSocialPlugin .

...