Symfony私信

时间:2011-06-29 12:52:13

标签: symfony1 doctrine symfony-1.4 private-messaging

我想在我的网站上发布私信。我希望该用户可以删除收到或发送的消息。为此我需要两个表一个用于发送消息,一个用于接收....是否可能当用户发送消息时,它会自动添加两个表?或者最好与桌子建立一些关系?或者可能存在更好的解决方案?

4 个答案:

答案 0 :(得分:2)

我认为你只需要一张桌子:

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 :(得分:1)

也许,你应该创建一个消息表,与用户表有两个关系:

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

答案 2 :(得分:0)

有一个symfony插件可以让你这样做。检查sfSocialPlugin

答案 3 :(得分:0)

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