0

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

4

4 回答 4

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。这种方法允许我们恢复“隐藏”消息(或完全删除它们)

于 2011-06-29T14:30:58.233 回答
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
于 2011-06-29T13:43:14.097 回答
0

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

于 2011-06-29T13:56:44.027 回答
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
于 2013-10-16T12:17:05.097 回答