0

自分のサイトでプライベート メッセージを作成したい。ユーザーが受信または送信したメッセージを削除できるようにしたい。そのためには、送信メッセージ用と受信用の 2 つのテーブルが必要です。ユーザーがメッセージを送信すると、2 つのテーブルから自動的に追加される可能性はありますか? または、テーブルとの関係を作成する方が良いですか? それともより良い解決策が存在しますか?

4

4 に答える 4

2

テーブルが1つだけ必要だと思います:

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 - 既読 - 着信メッセージのみ)

メッセージを送信したユーザーがメッセージを削除したい場合は、単に非表示にします (DB から削除するのではなく) - 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 に答える